Jenkins構建多配置專案(Multi-configuration)
本文參考自Jenkins相關資料,結合本人實際使用情況編寫。
相關文件:
- 《Jenkins:The Definitive Guide》 ——10.4 Multiconfiguration Build Jobs
可以解決的問題:
有時,我們希望專案能夠根據不同引數、或不同環境來編譯,若使用多個專案來實現,則有些浪費資源,那麼最好是可以實現:在一個專案中,就能根據給出的不同引數來編譯不同版本。
我這裡以自定義引數為例。
思路
比如當前專案的引數有四種(非完整引數,簡單舉例而已)
python -Purpose test -version 1.0
python -Purpose release -version 1.0
python -Purpose test -version 1.1
python -Purpose release -version 1.1
可以看到 Purpose 和 version 引數是可變的,那我們可以利用兩個變數將以上引數簡化為一條:
python -Purpose %purp% -version 1.%ver%
其中的 purp 可取值為 test
或 release
,ver 可取值為 0
或 1
.
有了目標,接下來就是在Jenkins中的應用實踐。
步驟
1、需要新建一個任務,型別為:構建一個多配置專案(Build multi-configuration project)
2、其他設定與一般任務相同,只是多了一個模組 Configuration Matrix
a)在Add axis
中,選擇User-defined Axis
,本例需要兩個變數,所以需要再增加一個User-defined Axis
b)這裡定義變數和對應的值,Name
中是變數名,Values
中是變數可取的值,中間以空格或回車隔開(注意:當可取值比較複雜的時候,建議每個值用英文雙引號隔離,值之間仍以空格、回車隔開),如圖,填入前面提過的變數和值,此時 purp
和 ver
就是可以在構建引數中直接使用的變量了
c)這個模組的下方有兩個可選項需要注意:
- Combination Filter
這個是過濾器,目前我們定義了兩個變數,也就是說最後會得到 2*2=4 個版本,而有時我們並不想拿到所有組合的版本,那麼這個過濾器就可以起作用了,比如我們不想編譯python -Purpose test -version 1.1
這個版本,過濾方法如圖。
BTW,當有多個版本要過濾時,可以使用括號和 || 分隔,如:
(purp == "test" && ver != "1") || (purp == "test" && ver != "0")
- Run each configuration sequentially
這個是指定所有版本要按順序編譯,建議勾選
3、構建引數
以上我們已經得到所需變數,那就可以在構建中寫入完整的引數配置,這裡選擇的是Windows 批處理命令(注意:使用變數的方式因命令而異,比如windows下的變數使用%,所以這裡用的是 %purp%
和 %ver%
)
python -Purpose %purp% -version 1.%ver%
4、儲存後,檢視專案,有一個引數矩陣,通過圓球可以對每個版本的構建結果一目瞭然(注意這裡的0和1是我們剛剛定義的變數值,不是序號)