Synchronizing parallel delivery flows in Jenkins using Groovy, BuildFlow and a bit of black magic Andrey Devyatkin, Automation Nights v15.09-STHLM
Apr 15, 2017
Synchronizing parallel delivery flowsin Jenkins using Groovy, BuildFlow
and a bit of black magic
Andrey Devyatkin, Automation Nights v15.09-STHLM
Andrey Devyatkin, @andrey9kin● Continuous Deliverer (CoDe:er with
DevOps at heart)● Coach● Open Source enthusiast● Traveler, runner, martial artist
Recent noticeable projects
● Continuous delivery pipeline setup for Ericsson new generation radio products
● ClearCase -> Git migration for 1000+ employees, 5-sites, 100 MLOC, 10 years legacy project
Problem
How to secure delivery order in the long-running-delivery-pipeline as well as enable concurrent pipelines executions?
Example:● SCM check out can run concurrently, but the changelog computation
requires that the check out of the earlier build has completed● Sending out an e-mail with test results requires info about the
previous build, so that we can decide an e-mail is necessary or not● Rolling out database schema updates● Delivering incremental changes to users
Image source: http://desigeek.com/blog/amit/2010/08/08/race-conditions-explained/
Problem
3
4
2
1
Build
Build
Build
Build
Pack
Pack
Pack
Test Test
Test
Test Test Deploy
We are heading to the trouble here!
Idea
Use Jenkins CheckPoint API in order to sync pipelines implemented using Groovy and BuildFlow (potentially WorkFlow)
Image source: http://delivervalue.blogspot.se/2013/06/more-advanced-build-flows-with-jenkins.html
Tools
● Docker
● Jenkins
● JobDSL
● Groovy
● BuildFlow
Image source: http://365psd.com/psd/drawing-tools-icon-psd-53148
Setup
https://github.com/Andrey9kin/jenkins-checkpoints-demo
Thank you!