Synchronizing parallel delivery flows in jenkins using groovy, build flow and a bit of black magic
1. Synchronizing parallel delivery flows
in Jenkins using Groovy, BuildFlow
and a bit of black magic
Andrey Devyatkin, Automation Nights v15.09-STHLM
2. 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
3. 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/
5. 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