前言
本篇文章是jenkins系列文章的第三篇文章,本篇文章將針對(duì)jenkins的通用配置(即General模塊)的配置進(jìn)行介紹,更多jenkins的文章可以通過(guò)下面連接進(jìn)行查看。
Jenkins系列(二)——觸發(fā)點(diǎn)和構(gòu)建環(huán)境的介紹
一、描述
描述這部分一般是填寫(xiě)這個(gè)任務(wù)的作用以及注意事項(xiàng)的,正常情況下建議不要留空白,根據(jù)實(shí)際情況來(lái)填寫(xiě)。保存后后續(xù)可以在任務(wù)的主頁(yè)上面看到對(duì)應(yīng)的內(nèi)容了。


二、舊構(gòu)建記錄處理(Discard old builds)
jenkins每次完成任務(wù)的構(gòu)建后,都會(huì)留下構(gòu)建的日志,如果配置了產(chǎn)物歸檔的話(huà),那么產(chǎn)物也會(huì)隨著構(gòu)建記錄一起保存下來(lái),長(zhǎng)期以往可能會(huì)對(duì)服務(wù)器的磁盤(pán)帶來(lái)一定的壓力,所以一般情況下,我們會(huì)選擇使用Discard old builds這個(gè)模塊的配置來(lái)幫助我們解決構(gòu)建歷史的空間占用問(wèn)題。
下面來(lái)講一下具體配置的含義
關(guān)于構(gòu)建日志
- 保持構(gòu)建的天數(shù)(Build age)
如果設(shè)置的值是7,那么七天前的歷史構(gòu)建記錄將在構(gòu)建新的任務(wù)時(shí)被被自動(dòng)清除 - 保持構(gòu)建的最大個(gè)數(shù)(Build count)
當(dāng)已經(jīng)存在一定數(shù)量的構(gòu)建時(shí),丟棄最舊的構(gòu)建。
這兩個(gè)選項(xiàng)可以同時(shí)激活,因此您可以將構(gòu)建保存14天,但最多只能保存50個(gè)構(gòu)建。 如果超過(guò)任何一個(gè)限制,那么超出該限制的任何構(gòu)建都將被丟棄。
關(guān)于發(fā)布包的保留策略
需要注意的是,如果沒(méi)有配置產(chǎn)物的歸檔的話(huà),默認(rèn)情況下產(chǎn)物都是不會(huì)進(jìn)行歸檔的,也就是說(shuō)jenkins不會(huì)保留發(fā)布包。因此只有在配置產(chǎn)物歸檔的前提下,設(shè)置發(fā)布包保留策略才有意義。

發(fā)布包保留天數(shù)
比如此處的值為5,5天前的發(fā)布包將被刪除,但構(gòu)建的日志、操作歷史、報(bào)告等將被保留(具體的保留策略看前面構(gòu)建天數(shù)/個(gè)數(shù)的配置)發(fā)布包最大保留#個(gè)構(gòu)建
如果非空,最多此數(shù)目大構(gòu)建將保留他們的發(fā)布包
請(qǐng)注意,當(dāng)這個(gè)配置被更新時(shí),或者當(dāng)任何配置值被超過(guò)時(shí),Jenkins不會(huì)立即丟棄項(xiàng); 每次完成該項(xiàng)目的構(gòu)建時(shí),才會(huì)根據(jù)這些規(guī)則進(jìn)行應(yīng)廢棄構(gòu)建包的刪除。
三、是否支持并發(fā)構(gòu)建

默認(rèn)情況下,一次只執(zhí)行一個(gè)項(xiàng)目的構(gòu)建—任何其他開(kāi)始構(gòu)建該項(xiàng)目的請(qǐng)求將保留在構(gòu)建隊(duì)列中,直到第一個(gè)構(gòu)建完成。
這是一個(gè)安全的默認(rèn)設(shè)置,因?yàn)轫?xiàng)目通常需要對(duì)某些資源(如數(shù)據(jù)庫(kù)或硬件)進(jìn)行獨(dú)占訪(fǎng)問(wèn)。

勾選上這個(gè)選項(xiàng)之后,任務(wù)就可以支持并發(fā)構(gòu)建了。不過(guò)正如官方文檔說(shuō)明一樣,這個(gè)選項(xiàng)一般適用于做一些測(cè)試用例,我們有幾組構(gòu)建的參數(shù)同時(shí)需要執(zhí)行,這個(gè)時(shí)候并發(fā)構(gòu)建任務(wù)就可以提升我們的驗(yàn)證效率。不過(guò)如果是打包部署的話(huà),一般考慮到資源的獨(dú)占性的話(huà),建議是不要選擇并發(fā)構(gòu)建。
四、構(gòu)建參數(shù)的傳遞
jenkins支持我們?cè)趫?zhí)行任務(wù)的時(shí)候根據(jù)需要傳遞不同的值進(jìn)行構(gòu)建,這樣可以很大程度上讓任務(wù)的構(gòu)建變得更加靈活。
(一)boolean類(lèi)型的參數(shù)
名稱(chēng)為后續(xù)展示在頁(yè)面上以及腳本可以引用的變量名,勾選Set by Default表示默認(rèn)值為true(需要注意,這里是字符串的true),描述的話(huà)根據(jù)實(shí)際情況寫(xiě)一下變量的作用就行。

我們可以使用例如下面的判斷來(lái)進(jìn)行變量的使用
if [ $needInstall == 'true' ];then
echo "選擇了needInstall"
else
echo "未選擇needInstall"
fi

(二)下拉框類(lèi)型的參數(shù)
名稱(chēng)和描述和boolean類(lèi)型的配置差不多,選項(xiàng)的話(huà)每行寫(xiě)一個(gè)選項(xiàng)


我們可以用類(lèi)似下面的判斷來(lái)進(jìn)行變量的使用
if [ $timeZone == '倫敦時(shí)區(qū)' ];then
echo "選擇了倫敦時(shí)區(qū)"
elif [ $timeZone == '北京時(shí)區(qū)' ];then
echo "選擇了北京時(shí)區(qū)"
else
echo "選擇了華盛頓時(shí)區(qū)"
fi
(三)憑證類(lèi)型的參數(shù)
我們?cè)谑褂?code>jenkins的過(guò)程中,肯定是難免需要配置各種憑證,對(duì)于這些憑證數(shù)據(jù),jenkins也支持我們作為參數(shù)進(jìn)行傳遞,這種參數(shù)類(lèi)型比較少會(huì)使用到,但是在進(jìn)行賬號(hào)權(quán)限測(cè)試這類(lèi)場(chǎng)景的話(huà),憑證類(lèi)型的參數(shù)就比較實(shí)用了。

此處需要注意,任務(wù)配置完成后,用戶(hù)選擇的憑證并不能由變量直接使用,事實(shí)上變量拿到的只是憑證的ID,需要結(jié)合其他配置和函數(shù)來(lái)使用,具體可以看下面這篇文章:Jenkins憑據(jù)管理
(四)文件類(lèi)型參數(shù)
這種數(shù)據(jù)類(lèi)型比較適合入?yún)⑹俏募娜蝿?wù),像我們跑一下任務(wù)的數(shù)據(jù)來(lái)源是固定格式的文件,我們就可以利用這類(lèi)參數(shù)來(lái)實(shí)現(xiàn)上傳文件到服務(wù)器后再啟動(dòng)應(yīng)用來(lái)進(jìn)行解析。此處有3個(gè)細(xì)節(jié)需要注意:
- 默認(rèn)情況下,用戶(hù)上傳的文件是放在當(dāng)前的工作空間下面的,且
jenkins這里的路徑支持我們配置多層級(jí)的目錄結(jié)構(gòu) -
jenkins雖然支持我們獲取上傳的文件名,但如果文件路徑本身存在目錄的話(huà),那么就無(wú)法使用${文件路徑}來(lái)直接讀取到文件名了 -
若用戶(hù)構(gòu)建時(shí)沒(méi)有上傳文件,原先已存在的文件不會(huì)被覆蓋
image.png

我們可以在腳本中使用用戶(hù)上傳的文件名
echo ${temFile}
(五)字符串類(lèi)型的參數(shù)
字符串類(lèi)型也是一個(gè)比較常使用的參數(shù),如果變量的值是有限且可預(yù)見(jiàn)的,一般更推薦使用choice parameter即下拉框類(lèi)型的參數(shù),但如果參數(shù)的值很多樣化,無(wú)法在構(gòu)建之前就預(yù)設(shè)好,那么字符串類(lèi)型的參數(shù)就是很好的替代方案。


我們一樣可以通過(guò) ${變量名} 的方式來(lái)使用我們傳遞的參數(shù)值
(六)多行文本類(lèi)型參數(shù)
這種參數(shù)類(lèi)型支持我們輸入多行的參數(shù),也算比較好理解,但個(gè)人覺(jué)得沒(méi)有太多使用的場(chǎng)景,如果是不確定入?yún)⒌臄?shù)量,希望通過(guò)輸入多行數(shù)據(jù)交由后面的腳本進(jìn)行分割處理的話(huà),就可以考慮用這類(lèi)參數(shù)。


