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
JCConf2016 Jenkins Pipeline
Search
Ching Yi Chan
October 11, 2016
How-to & DIY
900
2
Share
JCConf2016 Jenkins Pipeline
JCConf 2016 For Jenkins Pipeline, see:
https://github.com/qrtt1/JCConf2016_JenkinsPipeline
Ching Yi Chan
October 11, 2016
More Decks by Ching Yi Chan
See All by Ching Yi Chan
[coscup] Reading and modifying the source code of the dbt adapter
qrtt1
0
180
twjug-lite-17 結束了幾個月的 Java Web 培訓 站在人蔘迷途的我
qrtt1
0
130
[twjug-lite] 迷你研發部 [1]
qrtt1
0
1.2k
寫個好懂的程式
qrtt1
1
670
OAuth 2.0 Authorization Code Flow
qrtt1
0
340
types of knowledge
qrtt1
1
1.4k
twjug 小活動
qrtt1
0
520
TWJUG 2019
qrtt1
0
250
Learning Concepts
qrtt1
0
290
Other Decks in How-to & DIY
See All in How-to & DIY
JAWS-UG横浜100回記念 私のAWS ジャーニーと日本からみた横浜支部
awsjcpm
0
390
フィールドエンジニア at 多摩川 / Field Engineer at Tamagawa
aokiplayer
0
210
LLMを「機能」として組み込む技術:「Figma to はてなCMS」におけるプロンプトエンジニアリングからAIエージェント構築にわたる精度向上の軌跡
nanimonodemonai
0
500
What's the difference in taste between expensive and cheap mills? Measuring coffee particle size distribution using ImageJ
dogrunjp
0
840
終わりのない会議を超えて:HolacracyのTactical Meetingを体験しよう!
andrearc
0
230
スイングやカードをいい感じに立てるスタンドの話
niccolli
1
450
移動は善 / 20260124-NGK2026S
girigiribauer
1
150
家を建てて学ぶPjM
rinkei
0
130
プログラミング道場 "CoderDojo" を支援するサーバー提供システム 『DojoPaaS』 / How DojoPaaS powers the CoderDojo community in Japan
coderdojojapan
PRO
0
170
ボードゲーム × 専用収納 〜3Dプリントで埋めるニッチな隙間〜 / Board Games × Custom Storage
handlename
0
280
Burnoutとの「対話」 〜 アジャイルコーチングを活用した、燃え尽き症候群を克服するスキル 〜 / Dialogue with Burnout by Using Agile Coaching Skills
hageyahhoo
0
880
JAWS-UG/AWSコミュニティプログラムのご紹介 - JAWS-UG 佐賀
awsjcpm
2
260
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
810
A Soul's Torment
seathinner
6
2.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.5k
Embracing the Ebb and Flow
colly
88
5k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
110
Un-Boring Meetings
codingconduct
0
300
Code Reviewing Like a Champion
maltzj
528
40k
Transcript
Jenkins Pipeline 簡介 qrtt1 Ҟᑺ
什麼是 Pipeline • Delivery Pipeline (from Continuous Delivery) • Jenkins
Workflow Plugins • Job Workflow Pipeline • Pipeline 由多個 Step 組成,並且⽀支援 Pause/Resume • Pipeline 內的狀態必需可序列化 (Serializable) • 或宣告為不必列⼊入狀態 @NonCPS 的 function
為什麼是 Pipeline • 依然是 Jenkins Job 的⼀一種,依然很 FreeStyle。 • 為的是
Pipeline as Code • 它是 groovy DSL (domain specific language) و͉છՓ ˢ FreeStyle һ FreeStyle
Pipeline DSL • Jenkins 的 Pipeline 介紹 https://jenkins.io/solutions/pipeline/ • Pipeline
寫作教學 https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md • Pipeline 設計說明 https://github.com/jenkinsci/workflow-cps-plugin/blob/master/README.md • Pipeline Steps Reference https://jenkins.io/doc/pipeline/steps/ • Pipeline 最佳實踐 https://www.cloudbees.com/blog/top-10-best-practices-jenkins-pipeline-plugin ˴ࠅவࡈ ༾Ցਪᕚݟவࡈ
建⽴立 Pipeline Job • Pipeline Script from in-place editor •
Pipeline Script from SCM • Multi-branch Pipeline (from SCM) પᑥԴ͜4$.ٙ˙ό ቇΥఊਖ਼ࣩdʔΝචݬٙ1JQFMJOFІਗܔͭ සપᑥᏐ͜ᗇ᜕4DSJQUႧج
建⽴立 Pipeline 的⽅方式 • Pipeline Script Editor
建⽴立 Pipeline 的⽅方式 • Pipeline Script from SCM
Pipeline 規劃 SCM Checkout War Build Test SCM Commit Deploy
Release
Pipeline Script DEMO/Overview
Steps: node, stage, echo node { stage ('checkout') { echo
'checkout from git' } stage ('build') { echo 'build' } // … skip … } ίࡳɓ̨ዚኜൺ ࡳɓࡈචݬ ਂԬʡჿ
Steps: git stage ('checkout') { echo 'checkout from git' git
url: 'https://my-scm/path/my-project.git' branch: 'master' } optional
Steps: dir, pwd, sh (bat) dir ('project') { pwd() stage
('build') { sh """gradle clean build""" } stage ('test') { sh """gradle check""" } // … skip … }
Steps: step, archiveArtifacts stage ('archive') { step([$class: 'ArtifactArchiver', artifacts:
"build/**/*.war", fingerprint: true]) } stage ('archive') { archiveArtifacts artifacts: "build/**/*.war", fingerprint: true } ᔚٙᄳج อٙᄳج requires Jenkins 2.2+ with newer plugins
Refactoring Pipeline • 使⽤用 Function 合併多個 steps 為⼀一個有意義的動作 • 實作新的
Pipeline Step • 使⽤用 Pipeline Shared Libraries Ыဵək ೌج༨1JQFMJOF4DSJQUԴ͜ ̥ঐપญl https://github.com/jenkinsci/workflow-cps-global-lib-plugin https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Shared+Groovy+Libraries+Plugin
Pipeline Shared Library • 使⽤用⽅方法 • 啟⽤用 Jenkins ssh (因為
Jenkins 內建的 git repo ⺫⽬目前僅能 ssh auth) • 安裝 Plugin (id: workflow-cps-global-lib) • 使⽤用 git 指令 commit & push 提交 Shared Library 並在 Pipeline Script 開始使⽤用 https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+SSH XFCDPOTPMFฤరQMVHJOҬʔՑd͜DMJٜટܲༀыl
Pipeline 使⽤用⼼心得 • Pipeline as Code 可以⽅方便版本管理 • 內建的 Pipeline
Step 不夠多,得常得依賴 sh 或 bat 呼叫外部指令。 • 間接使⽤用 DevOps Tool 處理 • Ansible, Chef, Puppet • Ant, Maven, Gradle
Q & A