Jenkins參數(shù)化構(gòu)建與觸發(fā)

前言
我們在使用Jenkins進(jìn)行項目構(gòu)建時,有時會出現(xiàn)兩個項目之間關(guān)聯(lián)的情況,比如項目1構(gòu)建結(jié)束后想要直接執(zhí)行項目2,或者項目1中的某些參數(shù)需要傳遞給項目2來使用,此時可以使用Jenkins的參數(shù)化構(gòu)建方法來完成該過程。

Jenkins參數(shù)化構(gòu)建
勾選參數(shù)化構(gòu)建過程

選擇你想要添加的參數(shù)類型

參數(shù)定義,這里以選項參數(shù)類型為例

參數(shù)的使用,例如將構(gòu)造時所選的參數(shù)打印10次:
for((index=0;index<10;index++));
do
echo ${Param}
done參數(shù)化構(gòu)建,回到首頁,點擊 Build with Parameters,在彈出的選項框中勾選你想要使用的參數(shù)


例如我們選擇了option2,然后點擊立即構(gòu)建,可以在該構(gòu)建的項目下,查看控制臺輸出:

此時可以看到控制臺log中打印了10次option2,說明參數(shù)化構(gòu)建成功。
Jenkins任務(wù)觸發(fā)
在進(jìn)行多任務(wù)的持續(xù)集成項目構(gòu)建時,經(jīng)常會遇到需要執(zhí)行完任務(wù)1,然后再執(zhí)行任務(wù)2,如果任務(wù)2的執(zhí)行不需要用到任務(wù)1中的參數(shù),那么可以在任務(wù)2中的觸發(fā)器中添加任務(wù)1的名字。還是以write為任務(wù)1,以test_write為任務(wù)2舉例,在任務(wù)2的構(gòu)建觸發(fā)器選項中勾選其他工程構(gòu)建后觸發(fā),然后在關(guān)注的項目中填寫任務(wù)1的名字write,如下圖所示:

然后在任務(wù)2的執(zhí)行shell腳本中寫入打印3次‘test’的指令,保存。最后參數(shù)化構(gòu)建任務(wù)1,還是打印10次選項,這次勾選option3,可以看到該界面中,出現(xiàn)了下級項目為test_write的鏈接:

構(gòu)建任務(wù)1,參數(shù)選項為option3,則任務(wù)1的輸出為:

然后點進(jìn)test_write中,發(fā)現(xiàn)剛剛完成一個構(gòu)建項目:

點擊可以查看這個項目的控制臺輸出:

任務(wù)2正常打印了3遍test,說明任務(wù)1成功觸發(fā)了任務(wù)2并且正常構(gòu)建了。無參數(shù)觸發(fā)的方法不止這一種,還可以通過在任務(wù)1中添加構(gòu)建后操作-構(gòu)建其他工程-填寫要構(gòu)建的項目來完成,如下圖所示,原理與上述類似,不再贅述。

Jenkins參數(shù)化觸發(fā)
當(dāng)任務(wù)1中有構(gòu)建后需要傳遞給任務(wù)2的參數(shù)時,要想實現(xiàn)帶參數(shù)構(gòu)建,需要借助一個Jenkins插件:Parameterized Trigger,讀者可以自行安裝一下,安裝成功后,在項目的構(gòu)建后操作選項中可以看到多了一個Trigger parameterized build on other projects選項:

還是以write任務(wù)為任務(wù)1,test_write任務(wù)為任務(wù)2為例進(jìn)行講解。
1.在任務(wù)1中將執(zhí)行中的參數(shù)保存到properties文件中
因為終端shell執(zhí)行完畢后變量都會回收,所以不能夠?qū)⒆兞恐苯觽鬟f給任務(wù)2,需要將其寫入到文件中然后以文件的形式傳遞,在任務(wù)1的執(zhí)行shell代碼中加入如下代碼:
echo "PARAM_NAME=$Param" > profile.txtPARAM_NAME表示的就是將要傳遞給任務(wù)2的參數(shù),如圖所示:

2.在任務(wù)1中增加構(gòu)建后操作
在任務(wù)1中的增加構(gòu)建后操作中,選擇Trigger parameterized build on other projects,然后在項目名字中填寫test_write,在Add Parameters選項中選擇Parameters from?properties file:

在Use properties from file中添加profile.txt的路徑,注意此處一定要填你在服務(wù)器上保存的profile.txt的絕對路徑,否則會提示找不到(重要!?。。?。

然后點擊保存。
3.在任務(wù)2中添加構(gòu)建參數(shù)
將在任務(wù)1的properties文件中定義的參數(shù)PARAM_NAME 傳遞給任務(wù)2,那么PARAM_NAME就是任務(wù)2的構(gòu)建參數(shù),定義其為字符類型,并在執(zhí)行shell中打印三次這個參數(shù)。

任務(wù)2執(zhí)行shell代碼:
for((index=0;index<3;index++));doecho ${PARAM_NAME}done
然后點擊保存。
4.測試是否構(gòu)建成功
至此完成了任務(wù)1到任務(wù)2的參數(shù)化觸發(fā)過程,此時打開任務(wù)1,參數(shù)化構(gòu)建任務(wù)1,選擇option2測試:

我們期望任務(wù)1打印10次option2之后將該值通過保存在profile.txt中的PARAM_NAME來傳遞給任務(wù)2,并且觸發(fā)任務(wù)2進(jìn)行構(gòu)建,最終在任務(wù)2中打印3次:

如圖所示,此時說明任務(wù)2已經(jīng)由任務(wù)1帶參數(shù)觸發(fā)成功了。

結(jié)語
2020/03/17
至此我們已經(jīng)介紹了Jenkins參數(shù)化構(gòu)建與觸發(fā)的三種常用場景,使用Jenkins自帶的該工具可以在構(gòu)建多項目時節(jié)省很多時間,提升工作效率。
文章合集
Selenium | Appium? | Jenkins? |? Jmeter?
軟件測試方法匯總?|?Postman接口參數(shù)化?| 測試用例設(shè)計
視頻教程
Selenium?| Appium |?Jenkins |?Jmeter
AWS與Docker
如何使用AWS EC2+Docker+JMeter構(gòu)建分布式負(fù)載測試基礎(chǔ)架構(gòu)
Docker容器數(shù)據(jù)持久化和容器網(wǎng)橋連接
Docker刪除image和container
Docker與VM虛擬機(jī)的區(qū)別以及Docker的特點
END
覺得不錯,可以“點贊”和“在看”,或者轉(zhuǎn)發(fā)、留言
精彩的內(nèi)容要和朋友分享哦
