Build- und Delivery-Pipelines als Code mit Jenkins

Ähnliche Dokumente
Gesunde Dokumentation mit Asciidoctor

Plug & Play Benutzerverwaltung mit JBoss Keycloak

Robuste Anwendungen mit Hystrix

Daniela Reiner. Stuttgart,

Continuous Everything

CODE REVIEWS DONE RIGHT. Heiko Gramlich

Bekannte Tools in einem agilen Ansatz. Frank Schwichtenberg SourceTalkTage 2013 Göttingen,

REST-Services mit Dropwizard ruck-zuck erstellt, dokumentiert und getestet

Daniel Tschan Technischer Leiter. Continuous Delivery mit OpenShift

Build-Pipeline mit Jenkins

Continuous Delivery mit OpenShift, 2nd Edition

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

Web-Techniken Einführung in JavaScript

Renée Bäcker. Perl $foo Magazin

Einstieg in die Informatik mit Java

Git-Grundlagen für Entwickler. Thomas Claudius

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

DOM Document Object Model

Erfolgreicher Ums9eg auf Git

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

Lean Modeling - Software Systeme einfach und präzise mit natürlicher Sprache spezifizieren

Fachforum I: Prozessrevolution E-Akte, E-Rechnung und Co. verändern die behördliche Arbeitswelt

Einführung in Javadoc

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Bash-Scripting Linux-Kurs der Unix-AG

Continuous Integration mit Jenkins

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

The app the crashes, before the breakpoint is reached: Code to the event:

Continuous Integration (CI) Workshop

Entwicklungswerkzeuge

Echolot Qualitätssicherung mit Sonar

Anzeige des Java Error Stack in Oracle Forms

Web-basierte Anwendungssysteme PHP-Einführung

AsciiDoctor. Dokumentation schreiben kann Spass machen!

Versionierung und Dateistruktur

New Features Oracle Forms 11g Nichts Neu für Forms?

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

Play with Ansible - Provisioning von Weblogic mit Ansible

Ausnahmebehandlung in Java

Sonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

Shell-Scripting Linux-Kurs der Unix-AG

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

JasperReports als Nachfolger von Oracle Reports

Shell-Scripting Linux-Kurs der Unix-AG

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme

Shell-Scripting Linux-Kurs der Unix-AG

Automatisierte Serververwaltung mit Hilfe von Puppet

Shell-Scripting Linux-Kurs der Unix-AG

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Oracle Data Integrator Ein Überblick

Präsentation. Entwicklung eines Frameworks. in Forms 12c. - Light Version. Friedhold Matz. Forms Day Entwicklung eines Frameworks in Forms 12c

Platform as a Service (PaaS) & Containerization

Docker für Java Entwickler

Trivadis-Gadgets im Dienste ihrer Qualität: FAAT und PL/SQL Cop

Software-Engineering Grundlagen des Software-Engineering

Scala für Enterprise-Applikationen

Software Engineering II

JavaScript clientseitige Programmiersprache zur Dynamisierung von Internetseiten

Continuous Delivery in der Praxis

Java für C++ Programmierer

Einführung in die Computerlinguistik

Codegeneratoren mit Xtend , A. Arnold

Artem Eger. Build-Systeme in java Maven & ANT

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Gradle. Ein kompakter Einstieg in das moderne Build-Management-System ---> Mit einem Geleitwort von Hans Dockter, Erfinder von Gradle

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

Continuous Delivery mit Docker

Interface. So werden Interfaces gemacht

Eine Einführung in das verteilte Quelltextverwaltungssystem Git

Wie Klassen the people ins Netz gehen

Programmieren in Haskell Debugging

Plugins mit ADITO AID 004 DE

1&1 Frontend-Architektur. Nico Steiner

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Testgetriebenes Ajax. Johannes Link unabhängiger Softwarecoach Marco Klemm andrena objects ag

Transkript:

.consulting.solutions.partnership Build- und Delivery-Pipelines als Code mit Jenkins Alexander Schwartz, Principal IT Consultant Entwicklertag Frankfurt 16.02.2017

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 2

Mein Sponsor und Arbeitgeber msg systems ag Gegründet 1980 18 Büros in Deutschland präsent in 25 Länder Mehr als 6.000 Mitarbeiter 727 Millionen Umsatz 2015 msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 3

Wer ich bin Principal IT Consultant im Geschäftsbereich Travel & Logistics 501 gefundene Geocaches 2 Kinder 14 Jahre Java 1 Frau 7 Jahre PL/SQL 3,5 Jahre Direktbank 7 Jahre Absatzfinanzierung @ahus1de msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 4

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 5

Rollenverteilung im Projekt Klassische Rollenverteilung in Projekten XML Developer Build Engineer msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 6

Rollenverteilung im Projekt Klassische Rollenverteilung in Projekten XML XML Developer Build Engineer msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 7

Rollenverteilung im Projekt Herausforderungen Änderung der Build-Konfiguration nicht auf eine Person beschränken Versionierung der Build-Konfiguration für Nachvollziehbarkeit und Rollback Sicherheitsnetz zum Ausprobieren von Änderungen an der Build-Konfiguration msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 8

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 9

Jenkins Pipelines Jenkins Pipelines Version 1.0 verfügbar als Jenkins Workflow Dezember 2014 Umbenannt in Jenkins Pipeline Januar 2016 Verfügbar als Plugin für Jenkins 1.x Teil der Jenkins Distribution seit Jenkins 2.x msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 10

Jenkins Pipelines Variante für die Demo Alle Konfiguration sind in der Datei Jenkinsfile enthalten Build-Konfiguration ist in Groovy geschrieben Jenkinsfile ist im Root des Git-Repositories eingecheckt Multibranch-Pipeline legt für jeden Branch einen Job in einem Folder an msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 11

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 12

Demo Demo msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 13

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 14

Rezepte Hello World Alles ist Groovy Code. Ausgabe von Text, Kommentare im Code, Aufruf externen Kommandos node { echo 'Hello world! // Comments are supported! sh 'date' } msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 15

Rezepte Pipelines Mehrere Schritte. Einzeln in der GUI dargestellt. Logs separiert pro Stage. node { stage("one") { echo 'Hello world!' } stage("two") { echo 'Goodbye.' } } msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 16

Rezepte Fehlerbehandlung Fehlerbehandlung mit try/catch node { def err = null; try { /*... */ } catch (caughterror) { err = caughterror currentbuild.result = "FAILURE" } finally { /*... */ if (err) { throw err } } } msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 17

Rezepte E-Mail-Versand E-Mail-Versand unter bestimmten Bedingungen if (currentbuild.result!= 'SUCCESS' && currentbuild.result!= null /* && env.branch_name == 'master' */ ) { } def to = emailextrecipients([ [$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider'] ]) mail to: to, cc: "team@home.com", subject: "Jenkins build has finished with ${currentbuild.result}", body: "See <${env.build_url}>" msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 18

Rezepte Parallele Ausführung Mehrere Stages werden parallel ausgeführt. Schöne Darstellung im Blue Ocean Theme. node { parallel( a: { echo "this is branch a" }, b: { echo "this is branch b" } ) } msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 19

Rezepte Fehleranalyse Die Log-Dateien können lang werden. Für die Fehleranalyse bietet sich das build-failure-analyzer (BFA) Plugin an msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 20

Rezepte Build parametrisieren Nur die 10 letzten Builds aufheben properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactdaystokeepstr: '', artifactnumtokeepstr: '', daystokeepstr: '', numtokeepstr: '10']]]) node { /*... */ } msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 21

Rezepte Daten aufheben Archiver, Publisher für Checkstyle, JUnit und HTML archiveartifacts 'myfiles/*.pdf' step([$class: 'JUnitResultArchiver', testresults: '**/surefirereports/*.xml']) step([$class: 'CheckStylePublisher', pattern: '**/checkstyle-result.xml', unstabletotalall: '0', usepreviousbuildasreference: false]) publishhtml(target: [allowmissing: true, alwayslinktolastbuild: false, keepall: true, reportdir: 'yourreportdir', reportfiles: 'yourreportfile', reportname: 'yourreportname']) msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 22

Rezepte Snippet Generator msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 23

Build- und Delivery-Pipelines als Code mit Jenkins 1 2 3 4 5 Rollenverteilung im Projekt Jenkins Pipelines Demo Rezepte Projekterfahrungen msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 24

Projekterfahrungen Projektstatistik eines mittelgroßen Projekts 11 Monate Laufzeit 14 Personen haben das Jenkinsfile geändert (80% der Entwickler im Projekt) 122 Änderungen am Jenkinsfile* * ohne mehrfache Änderungen des gleichen Entwicklers an einem Tag msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 25

Projekterfahrungen Jenkins Pipelines Vorteile: Entwickler können Build-Konfiguration selber ändern, dadurch kein Engpass im Projekt Versionierung der Build-Konfiguration für gute Nachvollziehbarkeit und Rollback Branches als Sicherheitsnetz zum Ausprobieren von Änderungen an der Build-Konfiguration Dokumentation im Code möglich (und erwünscht) Nachteile: Für bekannte Funktionen aus der Web-GUI müssen die Script-Befehle neu gesucht werden (Snippet Generator kann helfen) Nicht alle Plugins unterstützen Jenkins Pipelines (aber es werden ständig mehr) @ahus1de msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 26

Links Jenkins Pipeline: https://jenkins.io/doc/book/pipeline/ @ahus1de msg Februar 2017 Entwicklertag Frankfurt Build- und Delivery-Pipelines Alexander Schwartz 27

Alexander Schwartz Principal IT Consultant +49 171 5625767 alexander.schwartz@msg-systems.com msg systems ag (Headquarters) Robert-Buerkle-Str. 1, 85737 Ismaning Germany www.msg-systems.com @ahus1de.consulting.solutions.partnership