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
2
810
JCConf2016 Jenkins Pipeline
JCConf 2016 For Jenkins Pipeline, see:
https://github.com/qrtt1/JCConf2016_JenkinsPipeline
Ching Yi Chan
October 11, 2016
Tweet
Share
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
110
twjug-lite-17 結束了幾個月的 Java Web 培訓 站在人蔘迷途的我
qrtt1
0
76
[twjug-lite] 迷你研發部 [1]
qrtt1
0
1.1k
寫個好懂的程式
qrtt1
1
590
OAuth 2.0 Authorization Code Flow
qrtt1
0
250
types of knowledge
qrtt1
1
1.3k
twjug 小活動
qrtt1
0
430
TWJUG 2019
qrtt1
0
190
Learning Concepts
qrtt1
0
200
Other Decks in How-to & DIY
See All in How-to & DIY
우분투한국커뮤니티를 세무서에 단체 등록한 이유 (2023. 12. 10.)
sukso96100
0
160
Terra Charge|普通充電器ご利用ガイドブック / Terra Charge Ordinary Charger Guidebook
contents
1
190
電気工事士を取ったら一瞬で元が取れた件
bicstone
3
5.2k
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
250
JAWS Days 2024 Keynote by Jeff Barr
awsjcpm
0
170
PlatformIO IDE用M5Stack定型コード環境の紹介
3110
1
430
JAWS-UG山梨第0回 AWSのユーザーコミュニティ支援
awsjcpm
0
130
銀座線・半蔵門線から、ふりかえりカンファレンス2024現地会場への行き方
pokotyamu
0
260
「おうちクラウド」が今も熱い!
hirosat
2
1k
言語習得のベストプラクティス を考える
kanedaakihiro
0
100
バーチャルバナナとリアルバナナ #iotlt #TouchDesigner
n0bisuke2
0
120
AWS User Community - JAWS-UG/AWS ユーザーコミュニティのご紹介
awsjcpm
1
150
Featured
See All Featured
KATA
mclloyd
29
14k
The Language of Interfaces
destraynor
156
24k
For a Future-Friendly Web
brad_frost
176
9.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Designing for humans not robots
tammielis
250
25k
Writing Fast Ruby
sferik
628
61k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Automating Front-end Workflow
addyosmani
1368
200k
How to train your dragon (web standard)
notwaldorf
91
5.8k
Building Adaptive Systems
keathley
40
2.4k
Designing Experiences People Love
moore
140
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
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