{"id":12315,"date":"2018-12-18T19:12:08","date_gmt":"2018-12-18T18:12:08","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=12315"},"modified":"2021-05-20T16:05:21","modified_gmt":"2021-05-20T14:05:21","slug":"build-pipeline-mit-yaml-script-zum-erzeugen-eines-deb-archives-mit-maven-und-jdeb-fuer-debian-auf-raspberry-pi-mit-gitlab","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=12315","title":{"rendered":"Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb f\u00fcr Debian auf Raspberry Pi mit GitLab"},"content":{"rendered":"<p>Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven f\u00fcr Debian auf Raspberry Pi.<\/p>\n<p>Oder wie kann man ein *.deb Archive mit Maven Plugin erzeugen?<br \/>\nOder wie verpackt man ein JAR in ein deb Archive, um es einfach auf einem Raspberr Pi zu installieren?<br \/>\nOder wer braucht ein Template f\u00fcr das erzeugen von Maven Artefacten mit einer automatischen Pipeline in GitLab?<br \/>\nOder wie validiere ich die Build-Scripte der Build-Pipeline?<br \/>\n<a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins.png\" class=\"wp-image-8722 size-full aligncenter\" height=\"2048\" width=\"2732\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins.png 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins-300x225.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins-768x576.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Jenkins-1024x768.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><br \/>\nAuf diese ua. Frage gibt dieser Blog-Artikel Auskunft.<\/p>\n<p>Wir wollen eine Build-Pipeline mit mehreren Javaversionen, test und build bzw. deploy erstellen. Hier der Flow der Pipeline:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.05.png\" class=\"size-full aligncenter wp-image-12316\" height=\"666\" width=\"804\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.05.png 804w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.05-300x249.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.05-768x636.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>So sieht die Pipeline mit den drei Stages aus:<!--more--><\/p>\n<pre class=\"lang:yaml decode:true \">\r\n\r\n#\r\n# Jobs f\u00fcr das Kaffee Projekt oder auch allgemein\r\n# als Template f\u00fcr Maven Jobs f\u00fcr compile und build\r\n# mit unterschiedlichen Java Versionen\r\n#\r\n# Thomas Wenzlaff http:\/\/www.wenzlaff.info\r\n#\r\n\r\n#\r\n# Die Jobs der Pipeline\r\n#\r\nstages:\r\n  - compile\r\n  - test\r\n  - build\r\n\r\n#\r\n# Macht ein Maven clean compile Java 8\r\n# \r\nJava-8 compile Job:\r\n   stage: compile\r\n   image: maven:3-jdk-8\r\n   script:   \r\n   - mvn clean compile -B\r\n   \r\n#\r\n# Macht ein Maven clean compile Java 9\r\n# \r\nJava-9 compile Job:\r\n   stage: compile\r\n   image: maven:3-jdk-9\r\n   script:   \r\n   - mvn clean compile -B\r\n   \r\n#\r\n# Macht ein Maven clean compile Java 10\r\n# \r\nJava-10 compile Job:\r\n   stage: compile\r\n   image: maven:3-jdk-10\r\n   script:   \r\n   - mvn clean compile -B\r\n   \r\n#\r\n# Macht ein Maven clean compile Java 11\r\n# \r\nJava-11 compile Job:\r\n   stage: compile\r\n   image: maven:3-jdk-11\r\n   script:   \r\n   - mvn clean compile -B\r\n   \r\n#\r\n# Macht ein Maven Test Java 11\r\n# \r\nTest Java-11 Job:\r\n   stage: test\r\n   image: maven:3-jdk-11\r\n   script:   \r\n   - mvn clean test -B\r\n   \r\n#\r\n# Macht ein clean install mit deploy des deb Archives ins lokale Repo mit Java 11\r\n#\r\nInstall Java 11:\r\n   stage: build\r\n   image: maven:3-jdk-11\r\n   script:   \r\n   - mvn clean install -B\r\n   artifacts:\r\n    paths:\r\n      - target\/*.deb\r\n\r\n\r\n<\/pre>\n<p>Ein <a href=\"http:\/\/kleinhirn.eu\/2018\/12\/16\/yaml\/\" rel=\"noopener\" target=\"_blank\">YALM Script<\/a> kann man leicht in GitLab validieren und testen.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML.png\" class=\"size-full aligncenter wp-image-12319\" height=\"1248\" width=\"1770\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML.png 1770w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML-300x212.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML-768x542.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/YAML-1024x722.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Dazu einfach auch diesen Link im GitLab Projekt oben rechts klicken:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31.png\" class=\"size-full aligncenter wp-image-12320\" height=\"364\" width=\"1844\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31.png 1844w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31-300x59.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31-768x152.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.32.31-1024x202.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Es erscheint ein Validator Fenster, wo der Code leicht entwickelt und getestet werden kann:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26.png\" class=\"wp-image-12321 size-full aligncenter\" height=\"932\" width=\"1295\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26.png 1295w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26-300x216.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26-768x553.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.33.26-1024x737.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>So, jetzt erstellen wir die pom.xml um ein *.deb Archive f\u00fcr den Pi zu erhalten. Wir verwenden dazu da Plugin <a href=\"https:\/\/github.com\/tcurdt\/jdeb\/blob\/master\/docs\/maven.md\" rel=\"noopener\" target=\"_blank\">jdeb<\/a>. Hier der relevante Auszug:<\/p>\n<pre class=\"lang:xhtml decode:true \">\t\r\n\r\n<plugin>\r\n\t\t\t\t<artifactId>jdeb<\/artifactId>\r\n\t\t\t\t<groupId>org.vafer<\/groupId>\r\n\t\t\t\t<version>1.3<\/version>\r\n\t\t\t\t<executions>\r\n\t\t\t\t\t<execution>\r\n\t\t\t\t\t\t<phase>package<\/phase>\r\n\t\t\t\t\t\t<goals>\r\n\t\t\t\t\t\t\t<goal>jdeb<\/goal>\r\n\t\t\t\t\t\t<\/goals>\r\n\r\n\t\t\t\t\t\t<configuration>\r\n\t\t\t\t\t\t\t<!-- Der Ziel deb Name -->\r\n\t\t\t\t\t\t\t<deb>${project.build.directory}\/${project.artifactId}-${project.version}.deb<\/deb>\r\n\t\t\t\t\t\t\t<!-- Das Verzeichnis mit der control Datei -->\r\n\t\t\t\t\t\t\t<controlDir>${basedir}\/debian<\/controlDir>\r\n\r\n\t\t\t\t\t\t\t<dataSet>\r\n\t\t\t\t\t\t\t\t<!-- Programm JAR nur f\u00fcr root -->\r\n\t\t\t\t\t\t\t\t<data>\r\n\t\t\t\t\t\t\t\t\t<src>${project.build.directory}\/${project.artifactId}-${project.version}-jar-with-dependencies.jar<\/src>\r\n\t\t\t\t\t\t\t\t\t<type>file<\/type>\r\n\t\t\t\t\t\t\t\t\t<mapper>\r\n\t\t\t\t\t\t\t\t\t\t<type>perm<\/type>\r\n\t\t\t\t\t\t\t\t\t\t<prefix>\/usr\/share\/${project.artifactId}<\/prefix>\r\n\t\t\t\t\t\t\t\t\t\t<filemode>444<\/filemode>\r\n\t\t\t\t\t\t\t\t\t\t<user>root<\/user>\r\n\t\t\t\t\t\t\t\t\t\t<group>root<\/group>\r\n\t\t\t\t\t\t\t\t\t<\/mapper>\r\n\t\t\t\t\t\t\t\t<\/data>\r\n\t\t\t\t\t\t\t\t<!-- Start Script im User Verzeichnis von pi -->\r\n\t\t\t\t\t\t\t\t<data>\r\n\t\t\t\t\t\t\t\t\t<src>kaffee-start.sh<\/src>\r\n\t\t\t\t\t\t\t\t\t<type>file<\/type>\r\n\t\t\t\t\t\t\t\t\t<mapper>\r\n\t\t\t\t\t\t\t\t\t\t<type>perm<\/type>\r\n\t\t\t\t\t\t\t\t\t\t<prefix>\/home\/pi\/${project.artifactId}<\/prefix>\r\n\t\t\t\t\t\t\t\t\t\t<filemode>700<\/filemode>\r\n\t\t\t\t\t\t\t\t\t\t<user>pi<\/user>\r\n\t\t\t\t\t\t\t\t\t\t<group>pi<\/group>\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<\/mapper>\r\n\t\t\t\t\t\t\t\t<\/data>\t\t\t\t\r\n\t\t\t\t\t\t\t\t<!-- Beispiel Daten im Excel Format -->\r\n\t\t\t\t\t\t\t\t<data>\r\n\t\t\t\t\t\t\t\t\t<src>kaffee.xlsx<\/src>\r\n\t\t\t\t\t\t\t\t\t<type>file<\/type>\r\n\t\t\t\t\t\t\t\t\t<mapper>\r\n\t\t\t\t\t\t\t\t\t\t<type>perm<\/type>\r\n\t\t\t\t\t\t\t\t\t\t<prefix>\/home\/pi\/${project.artifactId}<\/prefix>\r\n\t\t\t\t\t\t\t\t\t\t<filemode>644<\/filemode>\r\n\t\t\t\t\t\t\t\t\t\t<user>pi<\/user>\r\n\t\t\t\t\t\t\t\t\t\t<group>pi<\/group>\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<\/mapper>\r\n\t\t\t\t\t\t\t\t<\/data>\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<\/dataSet>\r\n\t\t\t\t\t\t<\/configuration>\r\n\t\t\t\t\t<\/execution>\r\n\t\t\t\t<\/executions>\r\n\t\t\t<\/plugin>\r\n\r\n\u2029<\/pre>\n<p>Wenn die Build-Pipeline durchgelaufen ist, kann das <strong>*.deb<\/strong> Archive von der <a href=\"https:\/\/gitlab.com\/IT-Berater\/twkaffee\/-\/pipelines\" rel=\"noopener\" target=\"_blank\">GitLab Seite<\/a>) geladen werden:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45.png\" class=\"size-full aligncenter wp-image-12325\" height=\"722\" width=\"1698\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45.png 1698w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45-300x128.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45-768x327.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.51.45-1024x435.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Dann fehlt noch die Konfigurationsdatei (control Datei) f\u00fcr das *.deb Archive<\/p>\n<pre class=\"lang:default decode:true \" >\r\nPackage: twkaffee\r\nVersion: 0.0.1\r\nSection: misc\r\nPriority: optional\r\nArchitecture: all\r\nDepends: jdk (&gt;= 1.8)\r\nMaintainer: Thomas Wenzlaff &lt;twkaffee@wenzlaff.de&gt;\r\nDescription: TW Kaffee Programm\r\nDistribution: development\r\nDepends: default-jre | java8-runtime\r\n<\/pre>\n<p>Weitere Details siehe im Beispiel Projekt (<a href=\"https:\/\/gitlab.com\/IT-Berater\/twkaffee\" rel=\"noopener\" target=\"_blank\">https:\/\/gitlab.com\/IT-Berater\/twkaffee<\/a>.<\/p>\n<p>Nach dem Download kann das <strong>artifacts.zip<\/strong> entpackt werden. Dort ist dann das *.deb Archive enthalten. Das dann auf den Pi kopieren und ein <strong>sudo dpkg -i twkaffee-0.0.1.deb<\/strong> ausf\u00fchren:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.58.38.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.58.38.png\" class=\"size-full aligncenter wp-image-12326\" height=\"154\" width=\"902\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.58.38.png 902w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.58.38-300x51.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-18.58.38-768x131.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Oder wenn man sich zuvor den Inhalt anschauen will, ein <strong>sudo dpkg-deb &#8211;contents twkaffee-0.0.1.deb<\/strong><\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26.png\" class=\"wp-image-12327 size-full aligncenter\" height=\"253\" width=\"1235\" alt=\"\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26.png 1235w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26-300x61.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26-768x157.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/Bildschirmfoto-2018-12-18-um-19.01.26-1024x210.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Will man alles wieder entfernen geht das einfach mit: <strong>sudo dpkg -r twkaffee<\/strong> Achtung, da nicht den Packagenamen mit Version angeben, sondern den Namen des Programm.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/img_0033.png\" class=\"size-full wp-image-12332\" width=\"2732\" height=\"2048\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/img_0033.png 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/img_0033-300x225.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/img_0033-768x576.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/12\/img_0033-1024x768.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven f\u00fcr Debian auf Raspberry Pi. Oder wie kann man ein *.deb Archive mit Maven Plugin erzeugen? Oder wie verpackt man ein JAR in ein deb Archive, um es einfach auf einem Raspberr Pi zu installieren? Oder wer braucht ein Template f\u00fcr das erzeugen &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=12315\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eBuild Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb f\u00fcr Debian auf Raspberry Pi mit GitLab\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,2173,4,5,808,3163,79,1023,2752,3388,7],"tags":[3477,3478,3425,2970],"class_list":["post-12315","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-debian","category-eclipse","category-java","category-linux-2","category-maven","category-programmierung","category-raspberry-pi","category-raspberry-pi-zero-w","category-script","category-tools","tag-den","tag-deviant","tag-gitlab","tag-pipeline"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12315"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12315\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12315"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}