1. 程式人生 > >Jenkins構建多配置專案(Multi-configuration)

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 可取值為 testrelease,ver 可取值為 01.

有了目標,接下來就是在Jenkins中的應用實踐。

步驟

1、需要新建一個任務,型別為:構建一個多配置專案(Build multi-configuration project)


這裡寫圖片描述

2、其他設定與一般任務相同,只是多了一個模組 Configuration Matrix

a)在Add axis中,選擇User-defined Axis,本例需要兩個變數,所以需要再增加一個User-defined Axis
這裡寫圖片描述

b)這裡定義變數和對應的值,Name中是變數名,Values中是變數可取的值,中間以空格或回車隔開(注意:當可取值比較複雜的時候,建議每個值用英文雙引號隔離,值之間仍以空格、回車隔開),如圖,填入前面提過的變數和值,此時 purpver 就是可以在構建引數中直接使用的變量了
這裡寫圖片描述

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是我們剛剛定義的變數值,不是序號)
這裡寫圖片描述