Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder:...

41
Jenkins Pipelines oder: Wie knechte ich meine Hardware.

Transcript of Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder:...

Page 1: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

Jenkins Pipelines oder:

Wie knechte ich meine Hardware.

Page 2: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

B E V O R W I R S T A R T E N …

› Einführung Jenkins

› Jenkins Pipeline

› Shared Libraries

A G E N D A

Page 3: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

W E R W I R S I N D

› Consulting- und Softwarepartner

› Unternehmergeführt

› 1996 gegründet

› 85 Mitarbeiter

› 1 Team aus Spezialisten

v i r t u a l 7 G m b H

Page 4: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

8 5 E X P E R T E N – 4 S T A N D O R T E – 1 T E A M

K A R L S R U H E

55 Mitarbeiter

Consulting Development Operations & SupportSalesMarketingFinanceHuman Resources

M Ü N C H E N

15 Mitarbeiter

Consulting Development Sales

T I M I S O A R A

15 Mitarbeiter

Consulting Development Human Resources

P F Ä F F I K O N

Consulting Development Sales

Page 5: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

U N S E R P O R T F O L I O

Page 6: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S I N T E G R A T I O N

DeadlineKick-Off

Integration

Commits

Page 7: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S I N T E G R A T I O N

Page 8: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S I N T E G R A T I O N

Page 9: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S I N T E G R A T I O N

Page 10: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S D E L I V E R Y

Page 11: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

C O N T I N U O U S D E P L O Y M E N T

Page 12: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

C O N T I N U O U S I N T E G R A T I O N & D E L I V E R Y

o Integrationsrisiken minimieren

o Frühe Feedbackzyklen

o Chaos-Release-Tage vermeiden

o Last-Minute Fixes reduzieren

o Erhöhung Transparenz

Page 13: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

J E N K I N S - A U F G A B E N

o Überwachung des Repositories

o Checkout neuester Änderungen

o Starten von Unit-Tests

o Starten von Integrations-Tests

o Bauen eines Deployables

o Benachrichtigung des Teams über den Build-Status

Page 14: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

J E N K I N S . I O E C O S Y S T E M

Blue Ocean

Jenkins Remoting

Jenkins X

Jenkins Core

Page 15: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

♥ J E N K I N S

Page 16: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch
Page 17: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

K L A S S I S C H E K O N F I G U R A T I O N

o GUI-Driven

o Fehleranfällig

o Updates vieler Jobs ist aufwändig

o Keine echte Versionsverwaltung

o Keine Tests

o Wiederverwendung nur schwer möglich

Page 18: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

J E N K I N S P I P E L I N E

Page 19: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

J E N K I N S P I P E L I N E

o Build as Code / „Pipeline as Code“

o Fokus auf Continuous Delivery

o Tests möglich

o Reviews möglich

o Neue GUI

o Voraussetzung: Jenkins Version > 2

Page 20: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

P I P E L I N E F E A T U R E S

o Pipeline als Code

o Kann jederzeit angehalten und wieder gestartet werden

o Überlebt auch ungeplante Neustarts

o Unterstützung von Loops, parallele Ausführung und fork / join

o Jenkins-Plugins stellen Pipeline Erweiterungen bereit

Page 21: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

J E N K I N S F I L E

pipeline {agent anystages {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {sh './mvnw deploy'

}}

}}

Page 22: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

J E N K I N S F I L E

o Beschreibt den Build und Deployment Prozess

o Single Source of Truth

o Zwei Syntaxen

o Declarative Pipeline

o Scripted Pipeline

Page 23: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

D E C L A R A T I V E P I P E L I N E

pipeline {agent anystages {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {sh './mvnw deploy'

}}

}}

• Einfache, strikte Syntax• Schnell zu lernen• Einfache Anwendungsfälle

Page 24: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

S C R I P T E D P I P E L I N E

node {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {if (currentBuild.number % 2) {sh './mvnw deploy'’

}}

}}

• Groovy (like) Syntax• Große Flexibilität• Für komplexe Szenarien geeignet

Page 25: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

S Y N T A X V E R G L E I C H

pipeline {agent anystages {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {sh './mvnw deploy'

}}

}}

Declarative Pipeline

node {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {if (currentBuild.number % 2) {sh './mvnw deploy'’

}}

}}

Scripted Pipeline

Page 26: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

S H A R E D L I B R A R I E S

o Erweitert die Pipeline um eigene Funktionalitäten

o Ermöglicht Wiederverwendung über mehrere Projekte

o Global verfügbar oder pro Pipeline

o Versioniert

o Testbar

Page 27: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

M A ß G E S C H N E I D E R T E S T E P S

pipeline {agent anystages {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {sh './mvnw deploy'

}}

}}

Page 28: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

M A ß G E S C H N E I D E R T E S T E P S

def call(String arguments) {sh "./mvnw -B ${arguments}"

}

Shared-library/vars/mvnw.groovy

Page 29: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

M A ß G E S C H N E I D E R T E S T E P S

@Library 'my-amazing-library'pipeline {agent anystages {stage('build') {steps {mvnw 'clean install'

}}stage('deploy') {steps {

mvnw 'deploy'}

}}

}

Page 30: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

M A ß G E S C H N E I D E R T E S T E P S

pipeline {agent anystages {stage('build') {steps {sh './mvnw clean install'

}}stage('deploy') {steps {sh './mvnw deploy'

}}

}}

@Library 'my-amazing-library'pipeline {agent anystages {stage('build') {steps {mvnw 'clean install'

}}stage('deploy') {steps {

mvnw 'deploy'}

}}

}

Ohne eigenen Step Mit eigenem Step

Page 31: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

Ä H N L I C H E P R O J E K T E

@Library 'my-amazing-library'pipeline {agent anystages {stage('build') {steps {mvnw 'clean install'

}}stage('deploy') {steps {

mvnw 'deploy'}

}}

}

serviceA/jenkinsfile serviceB/jenkinsfile serviceC/jenkinsfile

@Library 'my-amazing-library'pipeline {agent anystages {stage('build') {steps {mvnw 'clean install'

}}stage('deploy') {steps {

mvnw 'deploy'}

}}

}

@Library 'my-amazing-library'pipeline {agent anystages {stage('build') {steps {mvnw 'clean install'

}}stage('deploy') {steps {

mvnw 'deploy'}

}}

}

shared-library/vars/buildService.groovy

Page 32: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

Ä H N L I C H E P R O J E K T E

def call() {pipeline {agent anystages {stage('build') {steps {mvnw 'clean install‘

}}stage('deploy') {steps {mvnw 'deploy‘

}}

}}

}

shared-library/vars/buildService.groovy

Page 33: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

Ä H N L I C H E P R O J E K T E

@Library 'my-amazing-library‘buildService()

serviceA/jenkinsfile serviceB/jenkinsfile serviceC/jenkinsfile

@Library 'my-amazing-library'buildService()

@Library 'my-amazing-library'buildService()

Page 34: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

D O N E !

Page 35: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

P I P E L I N E T E S T S

o Unit-Tests mit JenkinsPipelineUnit

o Mock der Laufzeitumgebung

o Assertations basierend auf dem Call-Stack

o Mock von Jenkins-Kommandos

o Unterstützt Shared Libraries

o Intergrations-Tests mit Jenkins Test Harness

o Startet echten Jenkins

o Baut die Pipeline

o Zeigt Probleme mit Serialisierung, CPS und Script-Security auf

o Linting des Jenkinsfiles mit dem Command Line Linter

Page 36: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

D E M O – S H A R E D P I P E L I N E T E S T S

Page 37: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

“Anything that can go wrong will go wrong” -John W. Campbell Jr.

Page 38: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

T I P P S

o Starte mit Tests

o Static-Code-Analyse mit Codenarc

o Favorisiere declarative Pipelines

o Automatisch konvertieren mit Auto-Convert Freestyle to Pipeline-Plugin

o Shared Libraries mit Jenkins Pipeline Shared Library Gradle Plugin entwickeln

Page 39: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

|

F R A G E N

A N T W O R T E N

Page 40: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

DANKE.

Page 41: Jenkins Pipelines oder: Wie knechte ich meine Hardware. · 2018-07-06 · Jenkins Pipelines oder: Wie knechte ich meine Hardware. ... o Favorisiere declarative Pipelines o Automatisch

ORACLE. EXPERTIS E . PASSION.