Jenkins Pipeline動(dòng)態(tài)使用Git分支名稱的技巧,可以觸類旁通的那種
前言
在上一篇 Jenkins 使用環(huán)境變量 中,幫助大家使用一條 Docker 命令就可以快速玩轉(zhuǎn) Jenkins,同時(shí)用最簡(jiǎn)單的方式解釋了 Jenkins 中讓人混亂的環(huán)境變量,本文還是接著變量說點(diǎn)事情
一般成熟的項(xiàng)目流程都會(huì)通過 Jenkins Pipeline 來做 CI 部分,在默認(rèn) Jenkins 環(huán)境配置中,Jenkins Pipeline 分為兩種:
- Pipeline (單分支 Pipeline)
- Multibranch Pipeline (多分支 Pipeline)
如下圖:
如果使用了多分支 Pipeline,就不會(huì)存在動(dòng)態(tài)使用分支名稱的問題了。如果你想使用單分支 Pipeline,又想動(dòng)態(tài)使用分支,那本文就派上用場(chǎng)了
Jenkins 中動(dòng)態(tài)使用分支名稱
新建單分支 Pipeline后,可以在界面中看到 This project is parameterized , 勾選上,然后添加 String 類型的參數(shù),如下圖所示,String 類型的參數(shù)名稱為 BranchName, 默認(rèn)值是 master 分支
向下滾動(dòng),來配置 Jenkins Pipeline,其中在指定 Jenkins Pipeline 分支的位置,就可以使用上面剛剛創(chuàng)建的變量 BranchName 了,如下圖所示,配置成
- */${BranchName}
注意:如果勾選 Lightweight checkout 可能會(huì)出現(xiàn)下面的 Error
- stderr: fatal: Couldn't find remote ref refs/heads/${BranchName}
以這種方式,Jenkins Pipeline 會(huì)動(dòng)態(tài)根據(jù)分支名稱來拉取代碼,同樣也可以在 Jenkinsfile 中動(dòng)態(tài)使用剛剛創(chuàng)建好的 BranchName
- pipeline {
- ...
- parameters {
- string(name: 'BranchName', defaultValue: 'master', description: null)
- }
- stages {
- stage ('Test Branch Name') {
- steps {
- echo "${env.BranchName}"
- }
- }
- }
- }
當(dāng)點(diǎn)擊左側(cè) Build with Parameters 后,我們就可以動(dòng)態(tài)輸入分支名稱來運(yùn)行 job 了
總結(jié)
在 Jenkins 中,其實(shí)這是一種很常見的動(dòng)態(tài)使用參數(shù)的方式,config 的其他參數(shù)也可以動(dòng)態(tài)引用變量,大大增加靈活性,如果你要維護(hù) JenkinsPipelie 相關(guān)的內(nèi)容,你大概率會(huì)遇到這種需求,這個(gè)小技巧收入囊中吧