Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Automate jenkins job creation (#phpbnl18)
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Toni Van de Voorde
January 27, 2018
Technology
270
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Automate jenkins job creation (#phpbnl18)
Improved version given at phpbnl18
Toni Van de Voorde
January 27, 2018
More Decks by Toni Van de Voorde
See All by Toni Van de Voorde
Jenkins Automation
tonivdv
0
480
Automate jenkins job creation
tonivdv
1
1.4k
How to start with docker
tonivdv
1
240
How we use docker for our development environment
tonivdv
5
420
Other Decks in Technology
See All in Technology
今こそ知りたいAmplifyGen2
mkdev10
2
160
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
220
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.1k
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
100
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
570
FOSS4Gを活用した自治体業務DXの試み
470715
0
140
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
540
自分で立ててみるLLMサービス
y_sera15
0
150
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
100
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
継続的なAIコスト最適化
bgpat
1
260
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Mind Mapping
helmedeiros
1
400
Optimising Largest Contentful Paint
csswizardry
37
4k
Balancing Empowerment & Direction
lara
6
1.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
The SEO Collaboration Effect
kristinabergwall1
1
590
Navigating Team Friction
lara
192
16k
Unsuck your backbone
ammeep
672
58k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
870
Transcript
Automate jenkins job creation Toni Van de Voorde – CTO
@ Adsdaq.eu
Why Jenkins ? o Free o Open-Source o Customization o
Plugin system o Full control of the system
But o Time needed for configurations / customization
Adsdaq o Microservice oriented o Different techno's o Lot’s of
small feature branches Many jobs to manage !!!
The solution Job DSL Plugin
Job DSL Plugin A groovy-based Domain Specific Language for Jenkins
Jobs
Job DSL Plugin Installation FROM jenkins/jenkins:lts-alpine RUN /usr/local/bin/install-plugins.sh job-dsl
Job DSL Plugin Configuration 1. Create new Freestyle project
Job DSL Plugin Configuration 2. Add SCM
Job DSL Plugin Configuration 3. Add build step
Job DSL Plugin Configuration 4. Configure the build step
Job DSL Plugin Configuration 5. Save and execute the job
Job DSL Plugin Script Security Your first execution failed right
??? o Script Approval o Sandboxing o Disable
Job DSL Plugin Script Security Script Approval
Job DSL Plugin def gitUrl = 'git://github.com/jenkinsci/job-dsl-plugin.git’ job('demo1') { scm
{ git(gitUrl) } triggers { scm('*/15 * * * *') } steps { maven('-e clean test') } } Example demo1.groovy
Job DSL Plugin def gitUrl = 'git://github.com/jenkinsci/job-dsl-plugin.git’ job('demo1') { scm
{ git(gitUrl) } triggers { scm('*/15 * * * *') } steps { maven('-e clean test') } } Example demo1.groovy
Job DSL Plugin def gitUrl = 'git://github.com/jenkinsci/job-dsl-plugin.git’ job('demo1') { scm
{ git(gitUrl) } triggers { scm('*/15 * * * *') } steps { maven('-e clean test') } } Example demo1.groovy
Job DSL Plugin def gitUrl = 'git://github.com/jenkinsci/job-dsl-plugin.git’ job('demo1') { scm
{ git(gitUrl) } triggers { scm('*/15 * * * *') } steps { maven('-e clean test') } } Example demo1.groovy
Job DSL Plugin def gitUrl = 'git://github.com/jenkinsci/job-dsl-plugin.git’ job('demo1') { scm
{ git(gitUrl) } triggers { scm('*/15 * * * *') } steps { maven('-e clean test') } } Example demo1.groovy
Job DSL Plugin Currently supports up to 190 Plugins
Job DSL Plugin Community Driven o > 1000 Pull Requests
o 155 contributors o > 1000 stars
Job DSL Plugin Extend the DSL Heeelp my plugin is
not (yet) supported
Job DSL Plugin Extend the DSL demo2.groovy
Job DSL Plugin Generate Jobs/branch (1) demo3.groovy def gitUrl =
'git://github.com/jenkinsci/job-dsl-plugin.git’ def branches = ['master','dev','hotfix'] branches.each { branch -> job("demo3-${branch}") { scm { git(gitUrl, branch) } } }
Job DSL Plugin Generate Jobs/branch (1) demo3.groovy def gitUrl =
'git://github.com/jenkinsci/job-dsl-plugin.git’ def branches = ['master','dev','hotfix'] branches.each { branch -> job("demo3-${branch}") { scm { git(gitUrl, branch) } } }
Job DSL Plugin Generate Jobs/branch (1) demo3.groovy def gitUrl =
'git://github.com/jenkinsci/job-dsl-plugin.git’ def branches = ['master','dev','hotfix'] branches.each { branch -> job("demo3-${branch}") { scm { git(gitUrl, branch) } } }
Job DSL Plugin Generate Jobs/branch (2) demo4.groovy def project =
'Netflix/asgard’ def branchApi = new URL("https://api.github.com/repos/${project}/branches") def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader()) branches.each { def branchName = it.name def jobName = "${project}-${branchName}".replaceAll('/','-') job(jobName) { scm { git("https://github.com/${project}.git", branchName) } } }
Job DSL Plugin Generate Jobs/branch (3) demo5.groovy def project =
'automate-jenkins-job-creation’ def repo = "https://
[email protected]
/tonivdv/${project}.git" Process proc1 = "git ls-remote -h ${repo}".execute() Process proc2 = 'sed s/.*refs\\/heads\\///g'.execute() Process all = proc1 | proc2 all.waitFor() def branches = "${all.in.text}".split('\\n') branches.each { … }
Job DSL Plugin Generate Jobs/branch (4) demo5bis.groovy package utilities public
class GitUtils { public static String[] getRemoteBranches(def repoUrl, def out) { Process proc1 = "git ls-remote -h ${repoUrl}".execute() Process proc2 = 'sed s/.*refs\\/heads\\///g'.execute() Process all = proc1 | proc2 all.waitFor() out.println "### DEBUG: Begin ###" ... out.println "### DEBUG: End ###" def branches = "${all.in.text}".split('\\n') return branches } }
Job DSL Plugin Generate Jobs/branch (5) demo5bis.groovy import utilities.GitUtils def
project = 'automate-jenkins-job-creation’ def repo = https://
[email protected]
/tonivdv/${project}.git def branches = GitUtils.getRemoteBranches(repo, out) folder('demo5bis') branches.each { … }
Job DSL Plugin Conditionals demo6.groovy branches.each { branch -> def
myjob = job(jobName) { .. } if (branch == "master") { myjob.with { steps { maven('-e deploy clean test') } } } else { ... } }
Job DSL Plugin Conditionals demo6.groovy branches.each { branch -> def
myjob = job(jobName) { .. } if (branch == "master") { myjob.with { steps { maven('-e deploy clean test') } } } else { ... } }
Job DSL Plugin Conditionals demo6.groovy branches.each { branch -> def
myjob = job(jobName) { .. } if (branch == "master") { myjob.with { steps { maven('-e deploy clean test') } } } else { ... } }
Job DSL Plugin Many other features o Use any Java/Groovy
libraries o Functions to reuse code o Create Views/Folders/Worflows/…
Job DSL Plugin Tips o Credential Plugin o JobConfigHistory Plugin
o Use the great API Viewer o (https://[jenkins-host]/plugin/job-dsl/api-viewer/index.html) o https://jenkinsci.github.io/job-dsl-plugin/
Job DSL Plugin Tips o Commit your DSL scripts to
SCM o Don’t create jobs manually anymore :p
Job DSL Plugin References o Wiki o https://github.com/jenkinsci/job-dsl-plugin/wiki o API
Viewer o https://jenkinsci.github.io/job-dsl-plugin/ o Presentation demo files o https://github.com/tonivdv/automate-jenkins-job-creation
Automate jenkins job creation Questions?
Automate jenkins job creation Toni Van de Voorde
[email protected]
@tonivdv
www.devexp.eu https://github.com/tonivdv Thank You Join our Team
[email protected]
demo-files: https://git.io/vds08 Rate this talk: https://joind.in/talk/26f3d