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
X tips [X==9] for building a Bulletproof Deplo...
Search
oshai
July 13, 2017
Technology
63
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
X tips [X==9] for building a Bulletproof Deployment Pipeline with Jenkins
JUC 2017 presentation
oshai
July 13, 2017
More Decks by oshai
See All by oshai
Maintaining an Open Source The Good, Bad & Ugly
oshai
0
38
KScript
oshai
0
22
Klean Code with Kotlin
oshai
0
80
JVM languages shootout - Java, Scala & *Kotlin*
oshai
0
67
Koroutinify ; Lessons learned from applying Coroutines in Kotlin Backend ; Deep dive into Coroutines
oshai
1
140
Klean that Code, Boil those Boilerplates
oshai
2
100
Scala vs. Kotlin; Friend or Foe?
oshai
0
180
No forks, One star. Now what?! — How I published my Kotlin Open-Source lib
oshai
0
90
Scala--pack your Future[T]; Kotlin is coming! (Kotlin TLV)
oshai
0
210
Other Decks in Technology
See All in Technology
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
Metadata - Section 1: HTML Basics
mohab1
0
120
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
180
しろおびから始める!ログ活用の第一歩
shumei_ito
0
960
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
470
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
130
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
140
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
660
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
160
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Testing 201, or: Great Expectations
jmmastey
46
8.3k
We Are The Robots
honzajavorek
0
400
The Cost Of JavaScript in 2023
addyosmani
55
10k
Claude Code のすすめ
schroneko
67
230k
The Curious Case for Waylosing
cassininazir
1
570
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Navigating Team Friction
lara
192
16k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Prompt Engineering for Job Search
mfonobong
0
520
Transcript
X tips [X==9] for building a Bulletproof Deployment Pipeline with
Jenkins JULY 13 / TLV, Israel Ohad Shai Software Engineer && Team Leader @ Outbrain
About Me • Developing Software since 2005 • Mainly in
Java and JVM languages • Works on backend systems • Using Jenkins since 2011 • Co-author of codeine open-source tool for Continuous Deployment on large scale
Deployment Pipeline • The driver tool for Continuous-Delivery • Features:
• Complex build flows • Job as a Code (aka JenkinsFile) • Suspend/Resume and survive restarts of Jenkins
Tip #1 You should have done this ages ago •
Define
Tip #2 Start simple
Tip #3 Use Blue Ocean view
Tip #4 Validate artifacts and source code consistency across pipeline
Tip #5 Use commit hook with message regex gitCommitMessage =
sh(returnStdout: true, script: 'git log -1 --pretty=%B').trim() deployToProd = (gitCommitMessage =~ /#d2p/ || params.DEPLOY_TAG == "#d2p") //we also allow '#d2p' when triggering manually
Tip #6 pipeline { agent { docker 'maven:3-alpine' } stages
{ stage('Example Build') { steps { sh 'mvn -B clean verify' } } } } node { stage('Example') { try { sh 'exit 1' } catch (exc) { echo 'Something failed, I should sound the klaxons!' throw exc } } } Declarative Pipeline Scripted Pipeline
Tip #7 Ask for user authorization on sensitive operations timeout(time:5,
unit:'HOURS') { input message: ‘Deploy to production?', ok: 'Deploy!' } http://jenkins508.rssing.com/chan-25443405/all_p18.html
Tip #8 Integrate slack
Tip #9 Make the pipeline fast stage("Testing: phase a") {
parallel 'JUnit': { stage("junit") { sh '...' } }, 'Deploy to simulator': { stage("Deploy to simulator") { sh '...' } } }
Bonus Tip Noise Cancelling Headphones
Questions? Wanna try it? We’re hiring!
Questions? Wanna try it? We’re hiring!
Enjoy piping! https://weeklygravy.com/fashion-grooming/how-old-do-you-have-to-be-before-you-can-smoke-a-pipe/ @OhadShai