jenkins pipeline - seville jam

15
Jenkins Pipeline (previamente Workflow)

Upload: amunizmartin

Post on 23-Jan-2018

1.145 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Jenkins Pipeline - Seville JAM

Jenkins Pipeline(previamente Workflow)

Page 2: Jenkins Pipeline - Seville JAM

Continuous Delivery

• Definición de una línea de entrega

• Control de fases

• Fiabilidad

• Flexibilidad

Page 3: Jenkins Pipeline - Seville JAM

Un poco de historia

1. Downstream jobs

• Definición de dependencias entre jobs (en la propia configuración de cada job)

• Grafo de dependencias invisible/inmanejable

• Rígido, sin comunicación entre jobs

Page 4: Jenkins Pipeline - Seville JAM

Un poco de historia

1. Build Flow Plugin

• Definición de dependencias entre jobs (mediante un meta-job que define el flujo)

• Rígido, sintaxis limitada

• Sólo permite encadenar una sería de jobs

Page 5: Jenkins Pipeline - Seville JAM

Un poco de historia1. Build Flow Plugin

b = build( "job1", param1: "foo", param2: "bar" ) build( "job2", param1: b.build.number )

Page 6: Jenkins Pipeline - Seville JAM

El presente

1. Pipeline Plugin

• Definición de dependencias entre jobs (mediante un meta-job que define el flujo)

• Flexible, tanto como Groovy

• Posibilidad de definir qué sucede entre dos steps

Page 7: Jenkins Pipeline - Seville JAM

Jenkins Pipeline

• Definición de una línea de entrega (build, stage)

• Control de fases (stage, input)

• Fiabilidad (restarts y resume)

• Flexibilidad (groovy)

Page 8: Jenkins Pipeline - Seville JAM

El presente1. Pipeline Pluginparallel linux { node(‘linux-worker’) { git ‘https://github.com/amuniz/maven-hello’ sh ‘mvn clean install’ } }, windows { node(‘windows-worker’) { git ‘https://github.com/amuniz/maven-hello’ bat ‘mvn clean install’ } }

Page 9: Jenkins Pipeline - Seville JAM

El presente1. Pipeline Plugin

node { stage ‘build’ git ‘https://github.com/amuniz/maven-hello’ sh ‘mvn clean install’ input ‘Todo correcto?’ stage name: ’deploy’, concurrency: 1

sh ‘mvn deploy’ }

Page 10: Jenkins Pipeline - Seville JAM

PipelineDefinición de la línea de entrega (pipeline)

node { stage ‘Build’ git ‘https://github.com/amuniz/maven-hello’ sh ‘mvn clean install’ input ‘Todo correcto?’ stage name: ‘Deploy’, concurrency: 1

sh ‘mvn deploy’ }

Page 11: Jenkins Pipeline - Seville JAM

PipelineDefinición de la línea de entrega (pipeline)

Page 12: Jenkins Pipeline - Seville JAM

PipelineControl de fases

node { stage ‘build’ git ‘https://github.com/amuniz/maven-hello’ sh ‘mvn clean install’ input ‘Todo correcto?’ stage name: ’deploy’, concurrency: 1

sh ‘mvn deploy’ }

Page 13: Jenkins Pipeline - Seville JAM

PipelineFiabilidad

node { stage ‘build’ git ‘https://github.com/amuniz/maven-hello’ sh ‘mvn clean install’ input ‘Todo correcto?’

———— Jenkins restart ————

stage name: ’deploy’, concurrency: 1 sh ‘mvn deploy’ }

Page 14: Jenkins Pipeline - Seville JAM

–Spiderman uncle

“Un gran poder conlleva una gran responsabilidad”

Page 15: Jenkins Pipeline - Seville JAM

Antonio Muñiz @amunizmartin [email protected]

Sevilla y olé!Preguntas?