DevOps課程-Jenkins 9
前面學到針對單一Branch製作pipeline
那麼考量到同時針對多個Branches做Pipeline的需求處理
比如說我們可能有main,feature-1,bugfix-1等三個Branches
也許我們只是希望同時對三個Branches做Test流程
但是僅僅針對main Branch做部署
並且隨著後面增加feature-2,feature-3…Branches出來都只跑Test流程
就需要使用到Multi-Branch Pipeline
接著做Multi-Branch Pipeline使用練習
首先先確認目前demo使用的github Repo狀態:
為了展示Multi-Branch Pipeline的使用
我在其中兩個Branches新增Jenkinsfile-mbp
(亦即Multi-Branch Pipeline用Jenkinsfile)
內容都一致如下:
然後開始建立Multi-Branch Pipeline:
先展開Branch Source的Add source按鈕
去github複製url位置:
以上儲存後就設置好了!
上面只是一個掃描動作,確認Branch內有沒有對應的Jenkinsfile-mbp檔存在
回到最上層儀表板:
裡面會看到成功定義的屬於這個Multi-Branch Pipeline的Branches
另外其實在一般的pipeline Job內其實也能夠定義多個Branches
但是在一般的pipeline Job內其實有很多plugin沒辦法生效
(一般的pipeline Job像Jenkins env-vars.html裡面的變數就沒辦法用!)
想使用個BRANCH_NAME都沒辦法...
並且Multi-Branch Pipeline也比較容易觀看Git Repo裡面各個Branches對應
接著考慮一般狀況,通常Git flow上像是feature Branch或是bugfix Branch
一般都會是由main Branch分出來的
也就是會有跟main Branch一致的Jenkinsfile(供Multi-Branch Pipeline用)
我們可以針對上面作條件判斷,比如說只針對main Branch才部署
其他feature Branch或是bugfix Branch只做Test的Stage
比如下圖是剛剛建立得到的Multi-Branch Pipeline
我先把上圖中的jenkins-job-pipeline當作feature Branch來看
我同時調整兩個Branch上面的Jenkinsfile-mbp檔,改為如下:
同時調整main & jenkins-job-pipeline Branches內的該檔:
假裝jenkins-job-pipeline Branch上面Jenkins-mbp內容就是main分出去的!
然後執行!
這邊看到整個Multi-Branch Pipeline這個Job的Log:
各別Branch log要回到:
如上圖說明,因為我在pipeline的Jenkinsfile-mbp內有寫條件
細看log看到:
只有遇到main Branch才能跑完全部stage,否則只跑test stage
另外在Multi-Branch Pipeline內我只想針對單個Branch跑pipeline Job可以:
結果:
回頭看看main的那一個:
所以只要main Branch上面要使用的Jenkinsfile寫好條件
就可以從main Branch分出新的其他Branch
(通常如feature Branch,bugfix Branch...etc)
並且仍可以跟main要做的pipeline出區別