Jenkins Pipeline 動態使用分支名,觸類旁通

前言

在上一篇 Jenkins 使用環境變數 中,幫助大家使用一條 Docker 命令就可以快速玩轉 Jenkins,同時用最簡單的方式解釋了 Jenkins 中讓人混亂的環境變數,本文還是接著變數說點事情

一般成熟的專案流程都會透過 Jenkins Pipeline 來做 CI 部分,在預設 Jenkins 環境配置中,Jenkins Pipeline 分為兩種:

Pipeline (單分支 Pipeline)

Multibranch Pipeline (多分支 Pipeline)

如下圖:

Jenkins Pipeline 動態使用分支名,觸類旁通

如果使用了

多分支 Pipeline

,就不會存在動態使用分支名稱的問題了。如果你想使用單分支 Pipeline,又想動態使用分支,那本文就派上用場了

Jenkins 中動態使用分支名稱

新建單分支 Pipeline後,可以在介面中看到

This project is parameterized

, 勾選上,然後新增 String 型別的引數,如下圖所示,String 型別的引數名稱為

BranchName

, 預設值是

master

分支

Jenkins Pipeline 動態使用分支名,觸類旁通

向下滾動,來配置 Jenkins Pipeline,其中在指定 Jenkins Pipeline 分支的位置,就可以使用上面剛剛建立的變數

BranchName

了,如下圖所示,配置成

*/${BranchName}

Jenkins Pipeline 動態使用分支名,觸類旁通

注意:如果勾選 Lightweight checkout 可能會出現下面的 Error

stderr: fatal: Couldn‘t find remote ref refs/heads/${BranchName}

以這種方式,Jenkins Pipeline 會動態根據分支名稱來拉取程式碼,同樣也可以在 Jenkinsfile 中動態使用剛剛建立好的

BranchName

pipeline { 。。。 parameters { string(name: ’BranchName‘, defaultValue: ’master‘, description: null) } stages { stage (’Test Branch Name‘) { steps { echo “${env。BranchName}” } } }}

當點選左側 Build with Parameters 後,我們就可以動態輸入分支名稱來執行 job 了

Jenkins Pipeline 動態使用分支名,觸類旁通

總結

在 Jenkins 中,其實這是一種很常見的動態使用引數的方式,config 的其他引數也可以動態引用變數,大大增加靈活性,如果你要維護 JenkinsPipelie 相關的內容,你大機率會遇到這種需求,這個小技巧收入囊中吧

趣味原創解析Java技術棧問題,將複雜問題簡單化,將抽象問題圖形化落地如果對我的專題內容感興趣,或搶先看更多內容,歡迎訪問我的部落格 dayarch。top