文章目錄
Jenkins Job 觸發其他需要參數的 Job
Jenkins 完成專案 Continuous integration - CI build 後只能確保該專案可以通過建置,但系統各個功能是不是可以如預期執行有時是需要多個專案共同搭配的結果
同事遇到的問題就是這個情境:A 專案 job 建置完成後,需要 B job 執行後續動作加上 B job 需要在 build 時提供參數才能正確執行。之前的文章中並沒有紀錄到這種情境,剛好同事問起,順手紀錄一下
基本設定說明
A01-TestDev
是一般 project job用來模擬一般 project 的 free-style build job
TestTriggerPipeline
則是 Pipeline job用來模擬 project 成功建置後執行 stop iis、deploy、start iis 的動作
有一個名為
jobNames
的 String Parameter 用來接收輸入的參數Pipeline 內容
以下使用簡化內容模擬,如果想多了解 Pipeline job 可以參考 Jenkins 2 如何建立 Pipeline job
- Definition 使用 Pipeline script
script 直接列出 傳入的 jobNames
println "This job was caused by " + "${jobNames}"
A01-TestDev
成功後接著執行TestTriggerPipeline
TestTriggerPipeline
需要參數 - jobNames 來決定該怎麼進行後續步驟
安裝 Plugin - Parameterized Trigger Plugin
Parameterized Trigger Plugin
可以讓我們在觸發其他 job 時傳遞參數
Jenkins 主畫面 Manage Jenkins –> Manage Plugins
Available tab –> search
Parameterized Trigger Plugin
–> 勾選Parameterized Trigger Plugin
–> install
設定 A01-TestDev
Job
在
Post-build Actions
加上Trigger parameterized build on other projects
設定
Trigger parameterized build on other projects
Projects to build
有自動提示
Trigger when build is
視情境調整
加上 Parameter
視情境使用
Current build parameters
或是Predefined parameters
設定 Parameter
設定目標 job 所需參數的值
範例是將
jobNames
指定為目前的 job name
完整設定
A01-TestDev
Job build success 後使用當前 job name 當做 jobNames 參數直接執行TestTriggerPipeline
實際效果
可以看到 build 是由 upstream project A01-TestDev
發動的
心得
原本想透過 groovy 來取得 upstream
資訊,嘗試了好久一直找不到方法,後來透過目前方式不僅設定容易,也少了維護 groovy 的成本,真是不賴
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。