Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
X tips [X==9] for building a Bulletproof Deplo...
Search
oshai
July 13, 2017
Technology
0
44
X tips [X==9] for building a Bulletproof Deployment Pipeline with Jenkins
JUC 2017 presentation
oshai
July 13, 2017
Tweet
Share
More Decks by oshai
See All by oshai
Maintaining an Open Source The Good, Bad & Ugly
oshai
0
30
KScript
oshai
0
16
Klean Code with Kotlin
oshai
0
60
JVM languages shootout - Java, Scala & *Kotlin*
oshai
0
36
Koroutinify ; Lessons learned from applying Coroutines in Kotlin Backend ; Deep dive into Coroutines
oshai
1
110
Klean that Code, Boil those Boilerplates
oshai
2
60
Scala vs. Kotlin; Friend or Foe?
oshai
0
160
No forks, One star. Now what?! — How I published my Kotlin Open-Source lib
oshai
0
71
Scala--pack your Future[T]; Kotlin is coming! (Kotlin TLV)
oshai
0
180
Other Decks in Technology
See All in Technology
知っててうれしい HTTP Cookie を使ったセッション管理について
greendrop
1
110
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
140
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
410
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
220
20241125 - AI 繪圖實戰魔法工作坊 @ 實踐大學
dpys
1
440
MasterMemory v3 最速確認会
yucchiy
0
310
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
26
7.1k
AIエージェントに脈アリかどうかを分析させてみた
sonoda_mj
2
130
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
11
4.3k
スケールし続ける事業とサービスを支える組織とアーキテクチャの生き残り戦略 / The survival strategy for Money Forward’s engineering.
moneyforward
0
240
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
12k
React Routerで実現する型安全なSPAルーティング
sansantech
PRO
4
900
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Six Lessons from altMBA
skipperchong
27
3.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
340
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
How to Ace a Technical Interview
jacobian
276
23k
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