Jenkins參數化建置與上下游專案
介紹 Jenkins 參數化建置的設定方式
參數化建置
假設我目前有兩個 Jenkins Job,第一個 Job 執行成功後,才執行第二個 Job
第一個 Job 我們假設叫做【job01】;第二個 Job 我們把它叫做【job02】;這兩個專案都透過參數化建置與 Git Parameter 來控制檔案來源為哪一個 Branch,這邊先定義變數名稱為 Branch
在版控來源指定分支就可以將參數帶過來用了
執行也很簡單,透過Build with parameter
就可以選擇 branch
透過參數化建置其他專案
這樣執行 Job1 之後,就會自動觸發 Job2
透過上面的方式,Job02 被觸發的原因是因為 Job01 我們有設定建置後動作,觸發其他專案的參數化建置,其實並不是上下游專案的設定
上下游專案 從上游專案設定
建立 Job03、Job04 兩個任務,其中 Job03 設定建置後動作:建置其他專案
這樣子回到 Job03 就會看到他的下游專案為 Job04
而回到 Job04,也會看到它的上游專案為 Job03
上下游專案 從下游專案設定
也可以直接在下游專案中設定build after other project are built
效果是一樣的
拉拉作伙ㄟ阿娜?
比較妙的是,如果我上游、下游專案都設定,那會發生甚麼事情?
答案是實際的任務仍舊觸發一次,但是 Log 紀錄會顯示兩次
那如果加上參數化建置呢?
答案是,任務觸發兩次
透過任務的上下游設置,會觸發一次;而透過參數化建置其他專案,也會觸發一次;這兩者是分開計算的
所以如果是需要傳遞參數的場合,不要再設定任務的上下游依賴關係,避免多次觸發執行
補充:觸發另一個任務並傳遞參數範例
如圖,新增 Git Parameter 還有字串參數, Git Parameter 之前有去抓 GIT 資料所以有清單可以選,但下方範例我註解掉了,想要實際練習的人請自行修改一下
1 | // Job 1 |
第二個任務的設定也要新增一樣的參數
執行一下 pipeline,看看他有沒有正確傳遞參數跟觸發下一個任務
看起來是正確的
因為其他類型的參數好像要一個一個試,我沒有用到就懶了,這邊列出三個應該夠用了
類型 | 範例 |
---|---|
Secret | build job:'pipeline_job_2', parameters: [ credentials('parameter-name', 'credentials-id') ] |
Git Parameter | build job:'pipeline_job_2', parameters: [ gitParameter(name: 'Branch', value: Branch) ] |
字串參數 | build job:'pipeline_job_2', parameters: [ string(name: 'Greeting', value: Greeting) ] |