Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automation mit Jenkins 2.0

Automation mit Jenkins 2.0

Der Open Source Automation Server Jenkins kann seit der Version 2.0 noch vielfältiger eingesetzt werden, als dies vorher der Veröffentlichung der Version 2.0 der Fall war. Zuvor diente es vor allem als Continuous Integration Server. Quellcode konnte auf einen beliebigen VCS-Server hochgeladen werden, was Jenkins dann ausgecheckt, gebaut und getestet hat. Dies geschah in der Regel mit Hilfe von einfachen Bash oder Batch-Skripten mit einer Befehlskette. Mit Version 2.0 wird das ganze einfacher, flexibler und an einigen Stellen auch komplexer: Pipelines unterstützen die Entwickler bei der Umsetzung von Continuous Delivery. Wozu "nur" ein Jenkinsfile in Groovy geschrieben werden muss.

Der Talk richtet sich sowohl an Einsteiger in Jenkins als auch an möglichen Umsteigern von anderen Automation Servern wie etwa Travis-CI. Es wird gezeigt, wie man eine Pipeline definieren kann, wie sie geschrieben werden und wie weit man das ganze treiben kann, um höchste Flexibilität zu erreichen.

Sujeevan Vijayakumaran

October 17, 2016
Tweet

More Decks by Sujeevan Vijayakumaran

Other Decks in Technology

Transcript

  1. Automation mit Jenkins 2.0 Sujeevan Vijayakumaran oder auch: Er, dessen

    Name nicht genannt wird. committerconf 2016 17./18. Oktober 2016 Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 1 / 33
  2. Sujeevan Vijayakumaran aus Castrop-Rauxel Master Student an der Uni Duisburg-Essen

    Software-Entwickler und Git-Buch Autor (mitp-Verlag) ubuntuusers.de team member UbuCon Germany & UbuCon Europe Organisator Twitter: @svijee Google+: +Sujeevan Vijayakumaran Blog: svij.org Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 2 / 33
  3. Content 1 Jenkins CI (1.x) Master- & Slave-Nodes Plugins Jobs

    & Job-Definitions 2 Jenkins 2.0 Pipeline as Code Multibranch Pipeline GitHub Organization Plugin 3 Jenkins Blue Ocean Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 4 / 33
  4. Jenkins CI (1.x) Jenkins CI Consists of… Users/Committer Nodes (Master,

    Slaves) Plugins Job-Definitions (Bash-Skripte) Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 5 / 33
  5. Jenkins CI (1.x) Allgemeines zu Jenkins zwei Versionen LTS-Version: Updates

    alle 3-4 Monate (empfohlen) non-LTS-Versionen: Updates jede Woche (nicht empfohlen) in Java geschrieben - das RAM freut sich Konfiguration wird in XML-Dateien gespeichert Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 6 / 33
  6. Jenkins CI (1.x) Master- & Slave-Nodes Nodes Master: wo Jenkins-Server

    läuft Konfiguration aller Nodes und Jobs immer online optional auch als Slave nutzbar Slaves: wo Jobs ausgeführt werden optional online haben eigenständigen Namen können mehrere Labels tragen Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 8 / 33
  7. Jenkins CI (1.x) Plugins Plugins Plugin-Manager erlaubt zentrale Installation und

    Updates von Plugins viele™ Plugins verfügbar Funktionen in Plugins ausgelagert (VCS, Provisionierung,...) separate Aktualisierung unabhängig vom Server möglich Revert auf alte Version möglich Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 9 / 33
  8. Jenkins CI (1.x) Jobs & Job-Definitions Job-Definitions Jobs sind prinzipiell

    eine folge von Befehlen/Skripten die Aktionen durchführen. Konfiguration unterteilt in... ”General” Source Code Management Build-Triggers Build-Environment Buildverfahren Post-Build-Aktionen Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 11 / 33
  9. Jenkins CI (1.x) Jobs & Job-Definitions Free Style Project Freie

    Konfiguration nach belieben mit Skripten und Plugins nach Wahl. Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 12 / 33
  10. Jenkins CI (1.x) Jobs & Job-Definitions Free Style Project Sujeevan

    Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 13 / 33
  11. Jenkins CI (1.x) Jobs & Job-Definitions Multiconfigurationproject Überraschung: mehrere Konfigurationen

    des gleichen Jobs Beispiel: Kompilierung von Projekt für diverse Linux-Distributionen Komplexes: Testen des Projekts mit verschiedenen Konfigurationen -> Konfigurationsmatrix Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 14 / 33
  12. Jenkins CI (1.x) Jobs & Job-Definitions Nachteile initiale Konfiguration des

    Jenkins aufwändig im Standard komplett ”offen” Job-Konfiguration nicht an Repository gebunden (möglich, aber eher unschön) jeder Branch brauchte einen Job (oder als Konfigurationsmatrix) Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 16 / 33
  13. Jenkins 2.0 Jenkins 2.0! Im Frühjahr im Weekly-Release verfügbar, später

    als LTS. Mit Jenkins 2.0 wurde vieles besser: Einrichtungs-Assistent Pipeline as Code GitHub Organization Plugin Multibranch Pipeline Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 17 / 33
  14. Jenkins 2.0 Einrichtungsassistent Hilft bei der ersten Einrichtung... Anlegung eines

    Accounts Absicherung des Jenkins-Masters Installation nützlicher Plugins Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 18 / 33
  15. Jenkins 2.0 Pipeline as Code Pipeline as Code Vollständige Konfiguration

    in Jenkinsfile! in Groovy geschrieben versioniert im Repository geeignet für Continous Integration und Continuous Delivery pausierbar Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 19 / 33
  16. Jenkins 2.0 Pipeline as Code Pipeline as Code Sujeevan Vijayakumaran

    (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 20 / 33
  17. Jenkins 2.0 Pipeline as Code Pipeline as Code II Steps

    Nodes Stages Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 21 / 33
  18. Jenkins 2.0 Pipeline as Code Pipeline as Code III -

    Beispiel I Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 22 / 33
  19. Jenkins 2.0 Pipeline as Code Pipeline as Code III -

    Beispiel II Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 23 / 33
  20. Jenkins 2.0 Pipeline as Code Pipeline Snippet Generator Sujeevan Vijayakumaran

    (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 24 / 33
  21. Jenkins 2.0 Multibranch Pipeline Multibranch Pipeline Lösung des Problems: Für

    jeden Branch ein Job anlegen Konfigurieren eines Repositorys Jenkins scannt Repository nach Jenkinsfile ... und legt pro Branch mit Jenkinsfile einen Branch an Weiteres Problem: Für jedes Repository ein Multibranch-Pipeline Job anlegen... Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 25 / 33
  22. Jenkins 2.0 GitHub Organization Plugin GitHub Organization Plugin Scannt GitHub

    Nutzer/Organisation Legt Job pro Branch dynamisch und automatisch an Konfiguriert Pull-Request Anbindung automatisch Leider nicht für andere Git-Server verfügbar... Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 26 / 33
  23. Jenkins 2.0 GitHub Organization Plugin GitHub Organization Plugin Sujeevan Vijayakumaran

    (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 27 / 33
  24. Jenkins 2.0 GitHub Organization Plugin Fazit Jenkins 2.0 Konfiguration über

    Jenkinsfile (endlich!) Erleichterte Einrichtung Pipelines schreiben ist nicht so einfach Einige Funktionen sind umsetzbar Erleichterte Integration mit GitHub Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 28 / 33
  25. Jenkins 2.0 GitHub Organization Plugin Was fehlt? Eine neue, hübsche

    UI! Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 29 / 33
  26. Jenkins Blue Ocean Blue Ocean Version 1.0 in Beta als

    Plugin soll alte Jenkins Web-UI ersetzen noch recht feature-arm fokussiert auf Pipelines Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 30 / 33
  27. Jenkins Blue Ocean Blue Ocean - Pipeline as Code Sujeevan

    Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 31 / 33
  28. Jenkins Blue Ocean Live-Demo Jenkins 2.0 & Blue Ocean Live-Demo

    Jenkins 2.0 & Blue Ocean Sujeevan Vijayakumaran (committerconf 2016) Automation mit Jenkins 2.0 17./18. Oktober 2016 32 / 33