{"id":8703,"date":"2017-08-01T22:01:23","date_gmt":"2017-08-01T20:01:23","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=8703"},"modified":"2020-09-10T13:29:36","modified_gmt":"2020-09-10T11:29:36","slug":"wie-koennen-mit-jenkins-2-72-pipelines-auf-einen-raspberry-pi-zero-w-angelegt-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=8703","title":{"rendered":"Wie k\u00f6nnen mit Jenkins 2.72 Pipelines ruroci\u0105gi auf einen Raspberry Pi Zero W angelegt werden?"},"content":{"rendered":"<p>Frei nach Tim Bendzko (Jenkins):<br \/>\n<strong><br \/>\n         &#8222;Ich bin doch eine Maschine!<br \/>\n          Ich bin eine Maschine aus Bits und Bytes<br \/>\n          Und ich will leben, bis zum letzten Zug<br \/>\n          Ich bin eine Maschine mit all meinen Fehlern<br \/>\n          Meiner Wut und der Euphorie<br \/>\n          Bin eine Maschine,<br \/>\n          ich leb&#8216; von Volt und Spannung&#8220;<br \/>\n          &#8211; (c) Thomas Wenzlaff<br \/>\n<\/strong><\/p>\n<p><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\" alt=\"\" width=\"2732\" height=\"2048\" class=\"aligncenter size-full wp-image-8722\" 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><\/p>\n<p>Wenn man Jenkins schnell installieren will, und die Version keine Rolle spielt, dann geht es mit <\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo apt-get install jenkins\r\n<\/pre>\n<p>wie <a href=\"http:\/\/blog.wenzlaff.de\/?p=2143\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> schon mal beschrieben.<\/p>\n<p>Wer aber eine neue Version 2.7 mit <a href=\"https:\/\/www.duden.de\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pipelines<\/a> testen will, muss wie folgt vorgehen.<!--more--><\/p>\n<p>Zuerst muss mind. Java 1.8 installiert sein. Das checken wir eben mal mit <\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\njava -version\r\n# oder \u00e4ndern es, mit\r\nsudo update-alternatives --config java\r\n<\/pre>\n<p>Ergebnis:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\njava version \"1.8.0_65\"\r\nJava(TM) SE Runtime Environment (build 1.8.0_65-b17)\r\nJava HotSpot(TM) Client VM (build 25.65-b01, mixed mode)\r\n<\/pre>\n<p>Ok, das reicht.<\/p>\n<p>Dann verwenden wir das Debian Package Repository. Wir laden zuerst den Key:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nwget -q -O - https:\/\/pkg.jenkins.io\/debian\/jenkins.io.key | sudo apt-key add -\r\n<\/pre>\n<p>Dann das Repo in die Quellsources Liste erg\u00e4nzen:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo sh -c 'echo deb http:\/\/pkg.jenkins-ci.org\/debian binary\/ > \/etc\/apt\/sources.list.d\/jenkins.list'\r\n<\/pre>\n<p>Updaten und install von Jenkis aus dem neuem Repo:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo apt-get update\r\nsudo apt-get install jenkins\r\n<\/pre>\n<p>Start Jenkins<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo \/etc\/init.d\/jenkins start\r\n<\/pre>\n<p>das dauert etwas (ca. 10 min), den Status kann man mit <\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo \/etc\/init.d\/jenkins status\r\n<\/pre>\n<p>ausgeben.<\/p>\n<p>Nach ein paar Minuten im Browser \u00fcber die URL: <\/p>\n<p>http:\/\/(RASPBERRY-PI-ADRESSE):8080 <\/p>\n<p>den Jenkins aufrufen. Es erscheint eine Anmelde Maske, wo wir die gew\u00fcnschten Felder f\u00fcllen:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51.png\" alt=\"\" width=\"1162\" height=\"687\" class=\"aligncenter size-full wp-image-8711\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51.png 1162w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51-300x177.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51-768x454.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.38.51-1024x605.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Es kommt dieser Dialog, das der User angelegt wurde:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.20.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.20.png\" alt=\"\" width=\"519\" height=\"196\" class=\"aligncenter size-full wp-image-8712\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.20.png 519w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.20-300x113.png 300w\" sizes=\"auto, (max-width: 519px) 100vw, 519px\" \/><\/a><\/p>\n<p>Nun lesen wir auf der Konsole das init Admin Passwort:<\/p>\n<pre class=\"theme:dark-terminal lang:default decode:true \" >\r\nsudo cat \/var\/lib\/jenkins\/secrets\/initialAdminPassword\r\n<\/pre>\n<p>und kopieren es in den Dialog.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.47.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.47.png\" alt=\"\" width=\"1009\" height=\"668\" class=\"aligncenter size-full wp-image-8713\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.47.png 1009w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.47-300x199.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.39.47-768x508.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Dann w\u00e4hlen wir alle vorgeschlagenen Plugins, d.h. wir klicken auf den linken Button:<br \/>\n<a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.42.41.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.42.41.png\" alt=\"\" width=\"1024\" height=\"975\" class=\"aligncenter size-full wp-image-8710\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.42.41.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.42.41-300x286.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.42.41-768x731.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Das dauert wieder, nur Geduld:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.43.55.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.43.55.png\" alt=\"\" width=\"1015\" height=\"741\" class=\"aligncenter size-full wp-image-8709\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.43.55.png 1015w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.43.55-300x219.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.43.55-768x561.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Fehlermeldungen in dieser Art ignorieren wir erst einmal:<br \/>\n<a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.50.32.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.50.32.png\" alt=\"\" width=\"995\" height=\"731\" class=\"aligncenter size-full wp-image-8717\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.50.32.png 995w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.50.32-300x220.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-19.50.32-768x564.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Nach einiger Zeit l\u00e4uft Jenkins 2.72. Wir wollten ja aber eine Pipeline anlegen. Dann auf Element anlegen und Pipeline ausw\u00e4hlen:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02.png\" alt=\"\" width=\"1696\" height=\"748\" class=\"aligncenter size-full wp-image-8718\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02.png 1696w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02-300x132.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02-768x339.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.04.02-1024x452.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>In der Job Konfiguration geben wir das folgende Groovy Script ein:<\/p>\n<pre class=\"lang:default decode:true \" >node {\r\n   stage('Vorbereitung') { \r\n    echo 'Vorbereitung'\r\n   }\r\n   stage('Build') {\r\n    echo 'Build'\r\n    input 'Eingabe Zielplatform:'\r\n   }\r\n   stage('Ergebnis') {\r\n    echo 'Ergebnis'     \r\n   }\r\n   stage('Test') {\r\n    echo 'Testen'\r\n   }\r\n}<\/pre>\n<p>Und f\u00fchren den Job aus. Im Build Step, wird auf eine Nutzer Eingabe gewartet, und erst dann geht es weiter:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03.png\" alt=\"\" width=\"1391\" height=\"956\" class=\"aligncenter size-full wp-image-8719\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03.png 1391w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03-300x206.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03-768x528.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.16.03-1024x704.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Aber die Pipeline l\u00e4uft nun durch alle Stage:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12.png\" alt=\"\" width=\"1375\" height=\"924\" class=\"aligncenter size-full wp-image-8720\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12.png 1375w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12-300x202.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12-768x516.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.26.12-1024x688.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Cool, die Pipeline l\u00e4uft. Auch Cool ist der neue Scriptgenerator, dazu aber sp\u00e4ter mehr.<\/p>\n<p>Auf dem Raspberry Pi Zero W dauert der Seitenaufbau mitunter auch Minuten. Macht nicht viel Spa\u00df, aber l\u00e4uft, auch wenn die CPU und der Speicher oft voll belastet ist:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04.png\" alt=\"\" width=\"1579\" height=\"255\" class=\"aligncenter size-full wp-image-8721\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04.png 1579w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04-300x48.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04-768x124.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/Bildschirmfoto-2017-08-01-um-20.41.04-1024x165.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Wer den Http-Port 8080 \u00e4ndern will, kann das in der <strong>\/etc\/default\/jenkins<\/strong> Datei machen, dort den HTTP_PORT auf zu.B. 7777 setzen (HTTP_PORT=7777) und ein Restart <strong>sudo \/etc\/init.d\/jenkins restart<\/strong> schon l\u00e4uft es auf dem neuen Port.<\/p>\n<p>Wer sich selbst ausgesperrt hat, oder das Passwort vergessen hat, muss Jenkins runter fahren und kann in der <strong>\/var\/lib\/jenkins\/config.xml<\/strong> den Eintrag <strong>useSecurity<\/strong> true zu <strong>false<\/strong> \u00e4ndern und restarten.<\/p>\n<p>Die Log Datei kann mit <strong>tail -f \/var\/log\/jenkins\/jenkins.log<\/strong> angesehen werden.<\/p>\n<p>Du kannst Deine Pipeline hier als Kommentar posten;-)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Frei nach Tim Bendzko (Jenkins): &#8222;Ich bin doch eine Maschine! Ich bin eine Maschine aus Bits und Bytes Und ich will leben, bis zum letzten Zug Ich bin eine Maschine mit all meinen Fehlern Meiner Wut und der Euphorie Bin eine Maschine, ich leb&#8216; von Volt und Spannung&#8220; &#8211; (c) Thomas Wenzlaff Wenn man Jenkins &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=8703\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie k\u00f6nnen mit Jenkins 2.72 Pipelines ruroci\u0105gi auf einen Raspberry Pi Zero W angelegt werden?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,2983,1023,2752],"tags":[231,2971,2970,2190,1423,2789,2754],"class_list":["post-8703","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-jenkins","category-raspberry-pi","category-raspberry-pi-zero-w","tag-jenkins","tag-jenkins-2","tag-pipeline","tag-raspberry-pi","tag-w","tag-zero","tag-zero-w"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8703","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=8703"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8703\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8703"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}