Weitere ähnliche Inhalte
Ähnlich wie JCConf2016 Jenkins Pipeline (20)
Mehr von Ching Yi Chan (12)
JCConf2016 Jenkins Pipeline
- 2. 什麼是 Pipeline
• Delivery Pipeline (from Continuous Delivery)
• Jenkins Workflow Plugins
• Job Workflow Pipeline
• Pipeline 由多個 Step 組成,並且⽀支援 Pause/Resume
• Pipeline 內的狀態必需可序列化 (Serializable)
• 或宣告為不必列⼊入狀態 @NonCPS 的 function
- 3. 為什麼是 Pipeline
• 依然是 Jenkins Job 的⼀一種,依然很 FreeStyle。
• 為的是 Pipeline as Code
• 它是 groovy DSL (domain specific language)
版本控制
比 FreeStyle 更 FreeStyle
- 4. 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
主要看這個
遇到問題查這個
- 5. 建⽴立 Pipeline Job
• Pipeline Script from in-place editor
• Pipeline Script from SCM
• Multi-branch Pipeline (from SCM)
推薦使用 SCM 的方式
適合單 1 專案,不同階段的 Pipeline 自動建立
僅推薦應用於證驗 Script 語法
- 10. Steps: node, stage, echo
node {
stage ('checkout') {
echo 'checkout from git'
}
stage ('build') {
echo 'build'
}
// … skip …
}
在哪一台機器跑 哪一個階段
做些什麼
- 12. Steps: dir, pwd, sh (bat)
dir ('project') {
pwd()
stage ('build') {
sh """gradle clean build"""
}
stage ('test') {
sh """gradle check"""
}
// … skip …
}
- 13. 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
- 14. Refactoring Pipeline
• 使⽤用 Function 合併多個 steps 為⼀一個有意義的動作
• 實作新的 Pipeline Step
• 使⽤用 Pipeline Shared Libraries
你瘋了嗎?
無法跨 Pipeline Script 使用
只能推惹!
https://github.com/jenkinsci/workflow-cps-global-lib-plugin
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Shared+Groovy+Libraries+Plugin
- 15. 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
web console 搜尋 plugin 找不到,用 cli 直接按裝吧!
- 16. Pipeline 使⽤用⼼心得
• Pipeline as Code 可以⽅方便版本管理
• 內建的 Pipeline Step 不夠多,得常得依賴 sh 或 bat 呼叫外部指令。
• 間接使⽤用 DevOps Tool 處理
• Ansible, Chef, Puppet
• Ant, Maven, Gradle