SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
©2015 CloudBees, Inc. All Rights Reserved©2015 CloudBees, Inc. All Rights Reserved
Workflow in Jenkins
Kohsuke Kawaguchi / CTO, CloudBees, Inc.
kk@kohsuke.org / @kohsukekawa
Jesse Glick / Developer, CloudBees, Inc.
@tyvole
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
Use Cases: orchestrated activities
• Multi-stage continuous deployment pipeline
• Run part of build with a temporary server
• Blue/green deployment + auto commit/abort
• Parallel tests with automatic sharding
• Automatic per-branch jobs (à la Literate)
©2015 CloudBees, Inc. All Rights Reserved
Characteristics
• Complex pipelines involving multiple stages
• Non-sequential logic such as loops and forks
• Long-running builds must survive outages
• Interaction with humans pauses, input
• Restartable builds in case of a transient error
• Reusable definitions to avoid duplication
• Comprehensible scripts one clear definition
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
node('linux') {
stage 'Dev'
git 'https://github.com/me/app.git'
sh "${tool 'Maven 3'}/bin/mvn install"
parallel regr: {sh './regression-test.sh'},
perf: {sh './performance-test.sh'}
input 'All set?'
stage name: 'Prod', concurrency: 1
sh './deploy.sh'
}
©2015 CloudBees, Inc. All Rights Reserved
Key features (what I already covered)
• Entire flow is one concise Groovy script
– for-loops, try-finally, fork-join, etc.
• Can restart Jenkins while flow is running
• Human input/approval integrated into flow
©2015 CloudBees, Inc. All Rights Reserved
More key features
• Allocate slave nodes and workspaces
– as many as you like, when you like
• Standard project concepts: SCM, artifacts, …
©2015 CloudBees, Inc. All Rights Reserved
Design: workflow in VCS (1)
• Load the script from another file
• In repository
node {
git 'https://github.com/acme/foo.git'
load 'jenkins.groovy'
}
pom.xml
src
jenkins.groovy
...
©2015 CloudBees, Inc. All Rights Reserved
Design: workflow in VCS (2)
• Load the whole script from repository
• Job definition contains no Groovy
©2015 CloudBees, Inc. All Rights Reserved
Design: workflow in VCS (3)
• Shared workflow scripts/utilities in Git
• Your job just needs to have this
Git
org.acme.MyWorkflow.run(this)
©2015 CloudBees, Inc. All Rights Reserved
Stages (aka James Nord operator)
• Pipeline throttling primitive
• Special semaphore: only newest build may
wait
time
builds
build
build
build
selenium tests
selenium tests
selenium tests
build selenium tests
deployment
deployment
build
build selenium tests deployment
all but
deployment
phase runs in
parallel
deployment still
runs as fast as it can
canceled
©2015 CloudBees, Inc. All Rights Reserved
Build #153Build #153
©2015 CloudBees, Inc. All Rights Reserved
foo()
void foo() {
try {
sh 'sleep 1h'
} finally {
sh 'rm -rf *.tmp'
}
}
©2015 CloudBees, Inc. All Rights Reserved
Resumption of Groovy flows
• Transformed to “continuation-passing style”
• Run on custom interpreter of Groovy
– on master; includes security checks
• State of program saved at each pause point
• Variables serialized and restored after restart
©2015 CloudBees, Inc. All Rights Reserved
Resumed builds to the user
• It “just works”
• (Serializable) local variables restored too
• Shell-like steps survive restart
– Reconnection of slave, too
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
Jenkins Enterprise by CloudBees
• CloudBees’ value-added Jenkins distro
– Support & additional plugins
• Resume from checkpoint
– Can pick up artifacts from original build
– No need to rerun earlier expensive steps
• Visualization
– “Stage” view of pipelines
– More planned later
• Templates
– Define script in template, use attributes
©2015 CloudBees, Inc. All Rights Reserved
Demo
©2015 CloudBees, Inc. All Rights Reserved
Still to come
• more plugin integrations
• lots of little RFEs & bugs
• easier script syntax, editing
• workspace management
• multibranch projects?
• matrix project equivalent?
• much more, tracked in JIRA
©2015 CloudBees, Inc. All Rights Reserved
Status
• Open for contribution
• github.com/jenkinsci/workflow-plugin
• 1.3 current release
• Requires Jenkins 1.580.x+ today
• Under active development
©2015 CloudBees, Inc. All Rights Reserved
Summary
• Simplifies complex orchestration
• Define everything in single job
• Workflow as Groovy code
• Survives JVM loss, and even restartable
• Extensible
• github.com/jenkinsci/workflow-plugin
©2015 CloudBees, Inc. All Rights Reserved
©2015 CloudBees, Inc. All Rights Reserved
Design: flows
• persistent record of execution
• directed acyclic graph of nodes
• some nodes represent one step
• others indicate block start/stop structure
• nodes may have associated metadata
– console log fragment contributes to main log
• pluggable visualizations for different views
©2015 CloudBees, Inc. All Rights Reserved
Design: steps
• standalone API for asynchronous build steps
• context serves as an identifier & callback
– also offers logger, build, workspace, &c.
• support for block-structured steps
– invoke body 0+ times with revised context
• standard step for “durable” shell/batch scripts
• standard steps for SCMs (git, svn, other)
– >1 SCM per build possible
©2015 CloudBees, Inc. All Rights Reserved
Design: interoperability
• run on existing Jenkins slaves
• SCM plugins supported with modest changes
• some existing build steps & publishers
– “build wrappers” coming (1.599+)
• trigger existing jobs
• standard build history, artifacts
• needs Jenkins 1.580.x or later
– features factored out of standard projects

Contenu connexe

En vedette

Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
Anton Weiss
 

En vedette (19)

Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
 
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
 
Los vatos
Los vatosLos vatos
Los vatos
 
Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!Juc west-how to build a jenkins db the wrong way!
Juc west-how to build a jenkins db the wrong way!
 
Jenkins Workflow - An Introduction
Jenkins Workflow - An IntroductionJenkins Workflow - An Introduction
Jenkins Workflow - An Introduction
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson plugin
 
20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2
 
groovy and concurrency
groovy and concurrencygroovy and concurrency
groovy and concurrency
 
Using Jenkins XML API
Using Jenkins XML APIUsing Jenkins XML API
Using Jenkins XML API
 
DevOps – SonarQube
DevOps – SonarQubeDevOps – SonarQube
DevOps – SonarQube
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
 
Continuous Cross Platform Mobile App Development using Jenkins Build Server
Continuous Cross Platform Mobile App Development using Jenkins Build ServerContinuous Cross Platform Mobile App Development using Jenkins Build Server
Continuous Cross Platform Mobile App Development using Jenkins Build Server
 
Track code quality with SonarQube
Track code quality with SonarQubeTrack code quality with SonarQube
Track code quality with SonarQube
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90mins
 
Groovy Maven Builds
Groovy Maven BuildsGroovy Maven Builds
Groovy Maven Builds
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
Maven Nexus
Maven NexusMaven Nexus
Maven Nexus
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Jenkins Workflow Summit London 2015: Kohsuke/Jesse slides

  • 1. ©2015 CloudBees, Inc. All Rights Reserved©2015 CloudBees, Inc. All Rights Reserved Workflow in Jenkins Kohsuke Kawaguchi / CTO, CloudBees, Inc. kk@kohsuke.org / @kohsukekawa Jesse Glick / Developer, CloudBees, Inc. @tyvole
  • 2. ©2015 CloudBees, Inc. All Rights Reserved
  • 3. ©2015 CloudBees, Inc. All Rights Reserved Use Cases: orchestrated activities • Multi-stage continuous deployment pipeline • Run part of build with a temporary server • Blue/green deployment + auto commit/abort • Parallel tests with automatic sharding • Automatic per-branch jobs (à la Literate)
  • 4. ©2015 CloudBees, Inc. All Rights Reserved Characteristics • Complex pipelines involving multiple stages • Non-sequential logic such as loops and forks • Long-running builds must survive outages • Interaction with humans pauses, input • Restartable builds in case of a transient error • Reusable definitions to avoid duplication • Comprehensible scripts one clear definition
  • 5. ©2015 CloudBees, Inc. All Rights Reserved
  • 6. ©2015 CloudBees, Inc. All Rights Reserved
  • 7. ©2015 CloudBees, Inc. All Rights Reserved
  • 8. ©2015 CloudBees, Inc. All Rights Reserved node('linux') { stage 'Dev' git 'https://github.com/me/app.git' sh "${tool 'Maven 3'}/bin/mvn install" parallel regr: {sh './regression-test.sh'}, perf: {sh './performance-test.sh'} input 'All set?' stage name: 'Prod', concurrency: 1 sh './deploy.sh' }
  • 9. ©2015 CloudBees, Inc. All Rights Reserved Key features (what I already covered) • Entire flow is one concise Groovy script – for-loops, try-finally, fork-join, etc. • Can restart Jenkins while flow is running • Human input/approval integrated into flow
  • 10. ©2015 CloudBees, Inc. All Rights Reserved More key features • Allocate slave nodes and workspaces – as many as you like, when you like • Standard project concepts: SCM, artifacts, …
  • 11. ©2015 CloudBees, Inc. All Rights Reserved Design: workflow in VCS (1) • Load the script from another file • In repository node { git 'https://github.com/acme/foo.git' load 'jenkins.groovy' } pom.xml src jenkins.groovy ...
  • 12. ©2015 CloudBees, Inc. All Rights Reserved Design: workflow in VCS (2) • Load the whole script from repository • Job definition contains no Groovy
  • 13. ©2015 CloudBees, Inc. All Rights Reserved Design: workflow in VCS (3) • Shared workflow scripts/utilities in Git • Your job just needs to have this Git org.acme.MyWorkflow.run(this)
  • 14. ©2015 CloudBees, Inc. All Rights Reserved Stages (aka James Nord operator) • Pipeline throttling primitive • Special semaphore: only newest build may wait time builds build build build selenium tests selenium tests selenium tests build selenium tests deployment deployment build build selenium tests deployment all but deployment phase runs in parallel deployment still runs as fast as it can canceled
  • 15. ©2015 CloudBees, Inc. All Rights Reserved Build #153Build #153
  • 16. ©2015 CloudBees, Inc. All Rights Reserved foo() void foo() { try { sh 'sleep 1h' } finally { sh 'rm -rf *.tmp' } }
  • 17. ©2015 CloudBees, Inc. All Rights Reserved Resumption of Groovy flows • Transformed to “continuation-passing style” • Run on custom interpreter of Groovy – on master; includes security checks • State of program saved at each pause point • Variables serialized and restored after restart
  • 18. ©2015 CloudBees, Inc. All Rights Reserved Resumed builds to the user • It “just works” • (Serializable) local variables restored too • Shell-like steps survive restart – Reconnection of slave, too
  • 19. ©2015 CloudBees, Inc. All Rights Reserved
  • 20. ©2015 CloudBees, Inc. All Rights Reserved Jenkins Enterprise by CloudBees • CloudBees’ value-added Jenkins distro – Support & additional plugins • Resume from checkpoint – Can pick up artifacts from original build – No need to rerun earlier expensive steps • Visualization – “Stage” view of pipelines – More planned later • Templates – Define script in template, use attributes
  • 21. ©2015 CloudBees, Inc. All Rights Reserved Demo
  • 22. ©2015 CloudBees, Inc. All Rights Reserved Still to come • more plugin integrations • lots of little RFEs & bugs • easier script syntax, editing • workspace management • multibranch projects? • matrix project equivalent? • much more, tracked in JIRA
  • 23. ©2015 CloudBees, Inc. All Rights Reserved Status • Open for contribution • github.com/jenkinsci/workflow-plugin • 1.3 current release • Requires Jenkins 1.580.x+ today • Under active development
  • 24. ©2015 CloudBees, Inc. All Rights Reserved Summary • Simplifies complex orchestration • Define everything in single job • Workflow as Groovy code • Survives JVM loss, and even restartable • Extensible • github.com/jenkinsci/workflow-plugin
  • 25. ©2015 CloudBees, Inc. All Rights Reserved
  • 26. ©2015 CloudBees, Inc. All Rights Reserved Design: flows • persistent record of execution • directed acyclic graph of nodes • some nodes represent one step • others indicate block start/stop structure • nodes may have associated metadata – console log fragment contributes to main log • pluggable visualizations for different views
  • 27. ©2015 CloudBees, Inc. All Rights Reserved Design: steps • standalone API for asynchronous build steps • context serves as an identifier & callback – also offers logger, build, workspace, &c. • support for block-structured steps – invoke body 0+ times with revised context • standard step for “durable” shell/batch scripts • standard steps for SCMs (git, svn, other) – >1 SCM per build possible
  • 28. ©2015 CloudBees, Inc. All Rights Reserved Design: interoperability • run on existing Jenkins slaves • SCM plugins supported with modest changes • some existing build steps & publishers – “build wrappers” coming (1.599+) • trigger existing jobs • standard build history, artifacts • needs Jenkins 1.580.x or later – features factored out of standard projects