系列目錄html
本系列已經好久沒有更新了,接前面基礎篇,本系統主要介紹jenkins構建裏的一些高級特性.包括腳本參數化,Jenkins Pipeline與及在PipeLine模式下如何執行常見的傳統構建任務(這裏指jenkins自由風格構建模式),jenkins cli,jenkins ssh,jenkins任務調度,資源調度,jenkins任務遠程觸發,jenkins混合集羣搭建(同時包含windows和linux節點)等高級功能.linux
在一些複雜的構建中,咱們可能須要指定不少參數,若是這些參數都寫死在cmd或者powershell腳本或者ssh腳本里,腳本的可擴展性將嚴重受限,最爲重要的是修改構建腳本可能會形成嚴重後果(尤爲是一些很是複雜的腳本),這裏的一個最佳實踐就是不要輕易更改生產環境的腳本文件.而參數化構建能夠大大增長腳本的可擴展性.shell
Jenkins提供了豐富的參數配置入口結合腳本自身的外部參數處理能夠實現很是靈活的腳本參數配置.下面從腳本自身參數化選項,項目級參數化配置,節點級參數化配置以及全局參數配置來詳細講解如何在Jenkins裏實現參數化配置.windows
下面分別介紹bat腳本和powershell腳本如何接收外部參數數組
在windows bat腳本命令裏,能夠經過%0,%1,%2...以此類推來接收外部傳入參數,其中%0爲腳本自身的名稱,不少時候不是咱們須要的,咱們能夠從%1開始接收外部傳入參數.咱們假若有如下一個名爲build.bat
的腳本,它用做構建測試環境和生產環境的腳本,測試環境和生產環境的構建能夠經過一個外部參數來判斷.爲了簡單起見咱們並不使用真實環境的構建腳本,而是簡單模擬,但願讀者可以觸類旁通,聯繫到真實環境應用場景.ssh
這個bat腳本很是簡單,就一行代碼測試
echo %1
在Jenkins中,除了powershell和bat命令外,其它地方接收外部參數的方法寫法都是shell語法寫法,即
${參數名}
形式ui
若是咱們傳入什麼就會打印什麼,咱們傳入development,或者production,bat腳本就會接收到它們.以上很是簡單,這裏不在jenkins裏單首創建項目演示,你們能夠本身動手試一試.插件
相對於windows cmd,powershell更爲強大,也更爲靈活.下面分別介紹powershell的位置參數
和命名參數
調試
位置參數相似於上面講的cmd經過%0,%1獲取參數同樣,經過參數的順序來決定調用的是哪個參數.在Powershell裏,位置參數傳入到ps1文件後都存儲在了一個叫做$args的數組變量裏,能夠經過$args[0],$args[1]來獲取各位置上的參數(位置經過空格區分,若是參數包含空格須要加引號)
相似上面bat,咱們新建一個叫做'build.ps1'的powershell腳本文件,代碼與上面的bat相似,以下
echo $args[0]
須要注意的是,powrshell腳本文件(即後綴名爲ps1的文件)沒法經過cmd命令窗口打開.須要使用powershell窗口或者調用powershell.exe來打開
1) 使用powrshell命令窗口打開,就像打開cmd命令一下打開powershell命令窗口,須要注意的是powershell窗口執行ps1文件須要使用相對路徑或者絕對路徑,好比你要打開一個名稱爲Build.ps1
的文件,打開方式應該是.\Build.ps1
(相對路徑形式)或者C:\build.ps1
形式,不能是直接Build.ps1
2) 使用cmd打開powershell,在cmd中輸入powershell
就會進入powershell命令窗口,和直接打開powershell命令窗口效果是同樣的.
3) 經過powrshell.exe 執行powershell命令.在cmd中輸入powershell.exe -File 要執行的ps1文件便可運行ps1腳本
第三種方式提供了一種在cmd環境執行powershell腳本的方法,這在jenkins環境中很是有用,能夠沒必要使用powershell插件便可調用powershell腳本.
不少時候,尤爲在要傳入的參數很是多的時候,位置參數語義不是很清析,對於調試腳本很不方便,而命名參數能夠在必定程度上使語義更清楚,出錯的可能性也會更小.下面就介紹一下powershell中的命名參數,咱們新建一個名爲build.ps1
(名稱能夠隨便起)
param($build,$version) echo "current build type is: $build,and the version is:$version"
以上腳本咱們經過param關鍵字建立了兩個命名參數,$build和$version(powershell中參數命名前面要加一個$
符號),咱們在當前腳本所在文件夾下打開powershell命令窗口,而後執行如下命令
.\build.ps1 -version 1.0 -build development
能夠看到這裏是經過-+參數名
的方式來傳入命名參數
能夠看到輸出以下結果
current build type is: development,and the version is:1
你們能夠看到,無論-version
和-build
位置如何,輸出的結果都是同樣的.
明眼的同窗可能會發現一點小問題,那就是
-versoin
輸入的參數是1.0
而輸出的結果倒是1
,這是由於powershell把1.0看成數字來處理了,捨棄掉了沒有用的小數位,咱們想要輸出1.0只須要把1.0用引號引發來就好了,固然還有其它辦法,那就是指定參數的類型,指定參數類型超出了本節講解的範圍.有興趣的童鞋能夠查閱相關資料深刻了解.