{"id":5191,"date":"2017-04-17T13:03:16","date_gmt":"2017-04-17T12:03:16","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=5191"},"modified":"2017-04-17T13:03:35","modified_gmt":"2017-04-17T12:03:35","slug":"jenkins-mittels-gitlab-push-triggern-konfiguration-des-neuen-gitlab-plugins","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/jenkins-mittels-gitlab-push-triggern-konfiguration-des-neuen-gitlab-plugins\/","title":{"rendered":"Jenkins mittels GitLab-Push triggern: Konfiguration des neuen GitLab Plugins"},"content":{"rendered":"<p><em>Kontinuierliche Integration<\/em>, auf Englisch <em>Continous Integration<\/em> (kurz <em>CI<\/em>) ist in der professionellen Softwareentwicklung l\u00e4ngst zum elementaren Standard geworden. Das Bauen der Software muss kein l\u00e4stiger Arbeitsschritt sein, sondern l\u00e4sst sich bequem in den Arbeitsablauf integrieren: Beispielsweise l\u00f6st das Pushen in einen bestimmten Branch wie <em>dev<\/em> das Erstellen auf einem Entwicklersystem auf. Wogegen ein Merge-Request als Trigger f\u00fcr das Ausrollen aufs Produktivsystem genommen wird.<\/p>\n<p>Im Artikel <a href=\"https:\/\/u-labs.de\/portal\/gitlab-push-als-trigger-fuer-jenkins-mit-gitlab-community-ohne-enterprise\/\">GitLab-Push als Trigger f\u00fcr Jenkins mit GitLab Community ohne Enterprise<\/a> haben wir bereits gezeigt, wie sich dies auch mit der kostenfreien Community-Edition dank des SCM API-Plugins realisieren l\u00e4sst. Seit GitLab 8.3 gibt es eine offizielle L\u00f6sung, die mit beiden Editionen funktioniert: Das von Jenkins bereitgestellte <a href=\"https:\/\/github.com\/jenkinsci\/gitlab-plugin\" rel=\"nofollow\" target=\"_blank\">GitLab-Plugin<\/a>. Es simuliert einen GitLab-CI Server, sodass s\u00e4mtliche GitLab-Hooks genutzt werden k\u00f6nnen, um ein Projekt zu bauen.<\/p>\n<h3><strong>Jenkins-Einrichtung<\/strong><\/h3>\n<p>Zun\u00e4chst installieren wir das genannte\u00a0<a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/GitLab+Plugin\" target=\"_blank\" rel=\"nofollow\">GitLab Plugin<\/a>\u00a0in Jenkins. In der Konfiguration der Jobs findet sich im Register\u00a0<em>Source-Code-Management<\/em>\u00a0am Ende der Abschnitt\u00a0<em>Build-Ausl\u00f6ser<\/em>. Das Plugi hat hier einen zus\u00e4tzlichen Eintrag\u00a0<em>Build when a change is published to GitLab<\/em> eingef\u00fcgt:<\/p>\n<p><a href=\"https:\/\/u-img.net\/img\/5954Ig.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/5954Ig.jpg\" \/><\/a><\/p>\n<p>Dieser Haken muss gesetzt sein. Wichtig ist au\u00dferdem die am Ende erw\u00e4hnte URL. Sie wird am besten Kopiert, da wir diese im n\u00e4chsten Schritt als Ziel des GitLab-Hooks ben\u00f6tigen. Im unteren Bereich l\u00e4sst sich dar\u00fcber hinaus noch festlegen, welche Events grunds\u00e4tzlich einen zul\u00e4ssigen Trigger darstellen, und wie jeweils reagiert werden soll. Wobei dies nur die Jenkins-Seite darstellt.<\/p>\n<h3><strong>Konfiguration der GitLab-Hooks<\/strong><\/h3>\n<p>Im dazugeh\u00f6rigen GitLab-Projekt Klicken wir oben auf den Reiter\u00a0<em>Settings<\/em> sowie in der sich \u00f6ffnenden Sub-Navigation auf\u00a0<em>Integrations<\/em>. Als\u00a0<em>URL<\/em> f\u00fcgen wir die soeben aus Jenkins kopierte Adresse f\u00fcr den Job ein, die Jenkins aufrufen wird.<\/p>\n<p><a href=\"https:\/\/u-img.net\/img\/8281Ku.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/8281Ku.jpg\" \/><\/a><\/p>\n<p>Im unteren Bereich lassen sich verschiedene Ereignisse ausw\u00e4hlen. Push-Events und Merge-Requests sind hier wohl am interessantesten. Nat\u00fcrlich lassen sich diese Events auch au\u00dferhalb von Jenkins nutzen, um beispielsweise eigene Benachrichtigungen in verschiedenen Kan\u00e4len zu erzeugen. Hat man den oder die gew\u00fcnschten Ereignisse ausgew\u00e4hlt, wird der Hook mit\u00a0<strong>Add Webhook<\/strong> abgespeichert.<\/p>\n<p>Darunter ist eine Auflistung aller aktiven Hooks zu sehen:<\/p>\n<p><a href=\"https:\/\/u-img.net\/img\/5469Va.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/5469Va.png\" \/><\/a><\/p>\n<p>\u00dcber den\u00a0<em>Test<\/em> Button l\u00e4sst sich die korrekte Funktion pr\u00fcfen. Klappt alles, sollte Jenkins den Job starten und diesen mit dem GitLab-Nutzernamen versehen, der das jeweilige Event &#8211; in diesem Beispiel einen Merge-Request &#8211; ausgel\u00f6st hat:<\/p>\n<p><figure id=\"attachment_5192\" aria-describedby=\"caption-attachment-5192\" style=\"width: 339px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2017\/04\/jenkins-auto-build.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5192\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2017\/04\/jenkins-auto-build.jpg\" alt=\"Ein Jenkins-Job wird durch GitLab automatisch gestartet\" width=\"339\" height=\"157\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2017\/04\/jenkins-auto-build.jpg 339w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2017\/04\/jenkins-auto-build-300x139.jpg 300w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/a><figcaption id=\"caption-attachment-5192\" class=\"wp-caption-text\">Ein Jenkins-Job wird durch GitLab automatisch gestartet<\/figcaption><\/figure><\/p>\n<p><em>Verwendete Software f\u00fcr diesen Artikel:<\/em><\/p>\n<p><em>GitLab 9.0.5<\/em><\/p>\n<p><em>Jenkins 2.40<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kontinuierliche Integration, auf Englisch Continous Integration (kurz CI) ist in der professionellen Softwareentwicklung l\u00e4ngst zum elementaren Standard geworden. Das Bauen der Software muss kein l\u00e4stiger Arbeitsschritt sein, sondern l\u00e4sst sich bequem in den Arbeitsablauf integrieren: Beispielsweise l\u00f6st das Pushen in einen bestimmten Branch wie dev das Erstellen auf einem Entwicklersystem auf. Wogegen ein Merge-Request als &#8230;<\/p>\n","protected":false},"author":5,"featured_media":5192,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[61],"tags":[446,444,445,447],"class_list":["post-5191","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwareentwicklung","tag-ci","tag-gitlab","tag-jenkins","tag-kontinuierliche-integration"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=5191"}],"version-history":[{"count":4,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5191\/revisions"}],"predecessor-version":[{"id":5196,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5191\/revisions\/5196"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/5192"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=5191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=5191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=5191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}