持續集成高級篇之Jenkins參數化構建(二)

系列目錄html

上一節咱們講解了如何使用bat腳本或者powershell腳本自身的機制來達到參數化構建的目的,這在必定程序上增長了靈活性,然而缺點也至關明顯:它只能適應一些相對比較固定的參數傳入(好比像上一節講到的,構建的環境分爲(developmentproduction)兩種狀況,對於一些相對較複雜的狀況以上方法就會捉襟見肘,最爲明顯問題是外部的變化可能致使參數隨之作必要更改,最多見的是文件的位置參數,咱們指定歸檔文件的目錄爲D盤下的一個文件夾,如今D盤滿了須要指定爲其它盤,則全部的腳本都須要更改,這樣的結果就是可維護性差.咱們能夠把一些較爲經常使用的參數定義爲全局參數,好比經常使用工具的位置.java

本節咱們將從項目級別,節點級別,全局級別來說解Jenkins ci提供的參數配置方案sql

項目級別參數

本節部分咱們分爲參數構建和在項目中定義項目級別參數來說解.shell

參數化構建項目.

在Jenkins裏新建一個自由式項目,勾選This project is parameterized會出現一個Add Parameter按鈕,點擊會出現一個下拉框,選擇最後一項'string paramter'建立一個字符串類型參數,在出現的對話框中輸入名稱(我用的是buildenv)和默認值(默認值能夠不輸入),在構建欄裏咱們選擇Execute windows bat command,在出現的框中輸入如下內容:windows

//buildenv爲咱們定義的參數名
echo %buildenv%

點擊ok完成項目建立,此時build now按鈕變成了Build with Parameters參數化構建,點擊又會出現一步讓輸入值,有默認值能夠直接點擊'build',點擊後咱們查看控制檯能夠看到輸出了咱們定義的參數工具

在之後的章節裏也是同樣,不論是Jenkins預置的參數仍是咱們自定義的,使用cmd時都是經過%參數名%來獲取.sqlserver

若是是powershell腳本,則須要使用$env:參數名來接收參數,好比在powershell命令窗口輸入echo $env:buildenv就會達到和上面cmd同樣的效果.ui

須要指出的是,若是在jenkins裏直接執行powershell命令,須要下載powershell插件.插件

項目級別參數

以上參數化構建適用於須要手動構建的,不是特別頻繁可是參數又必須動態指定的狀況,這種構建缺點也至關明顯,由於每次須要手動指定參數.還有一種方法是指定項目級別的參數,這種方式比直接使用腳本自身參數要更容易管理,由於參數在單獨的一塊地方定義,而且能夠添加描述,使得語義更加明確,而且參數在單獨醒目地方出更容易引發關注.code

下面講解一下如何在項目級別添加環境變量.

新建一個自由式項目,名稱隨意,找到Build Environment欄目,找到Inject environment variables to the build process選項並勾選,此時會出現一些輸入框讓輸入,Properties File Path暫時忽略,在下面的Properties Content裏輸入buildenv=development就能夠在bat,shell或者powershell腳本里使用它了.

若是須要定義多個參數,換一行書寫就好了,一樣是name=value形式

你們可能已經看到,選項裏除了Properties Content外,下面還有Groovy Script選項,你們不要懼怕,這裏並不講Groovy,這裏可使用一些簡單的groovy語法來定義參數變量

Groovy Script框裏輸入的選項以下

def str="hello,world"
return ["greeting":str,"filename":"jenkins.txt"]

可使用 def關鍵字定義一個變量,下面return裏的內容能夠作爲參數在構建時使用.好比在bat腳本里可使用%greeting%來獲取鍵爲greeting的參數的值.

節點級別參數

有些參數在不一樣的節點上是不同的,好比說某一個工具的位置,若是咱們把它定義爲項目級別,由工具在不一樣節點上安裝的位置多是不同的,這樣就會形成部分節點上的構建失敗.這時候能夠考慮把參數定義爲節點級別.

進入Manage Jenkins>Manage Nodes,進入管理頁面便會看到咱們已經建立好的Jenkins節點,點擊某個基點後面的齒輪圖標,在出現的界面裏找到Node Properties,勾選Environment variables此時即可以輸入參數的名稱和值,點擊Add按鈕則能夠添加多個參數.完成後點擊Save保存後即可以在腳本里使用剛定義的節點級別的變量了.

全局變量

全局變量對全部節點都有效,當某些變量不會由於環境的改變而改變,好比說構建的版本只有development和production時,就能夠定義爲全局變量.這樣不須要在每一個項目裏都重複定義了.

全局變量的定義也很是簡單,進入Manage Jenkins>Configure System找到Global properties並勾選Environment variables出現的界面跟節點級別配置相似.

使用文件參數

Jenkins提供了靈活的配置選項,咱們除了能夠在Jenkins內部配置參數外,還能夠之外部文件的形式提供配置參數,配置參數爲name=value鍵值對形式,必須符合java properties文件格式.

下面講解如何使用配置文件.

咱們新建一個自由式項目,滾動到Build Environment欄,勾選Inject environment variables to the build process,在Properties File Path選項裏輸入配置文件路徑,我放在了E盤裏,路徑爲E:\testenv.txt,這個文件很簡單,裏面就一行內容,以下:

database=sqlserver

往下流動到Build欄,新建一個 Execute windows bat command,輸入如下內容

echo %database%

保存後點擊構建,能夠看到控制檯輸入sqlserver

相關文章
相關標籤/搜索