<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      系列目錄 <https://www.cnblogs.com/tylerzhou/p/11204826.html>


      上一節(jié)我們講解了如何使用bat腳本或者powershell腳本自身的機(jī)制來達(dá)到參數(shù)化構(gòu)建的目的,這在一定程序上增加了靈活性,然而缺點(diǎn)也相當(dāng)明顯:它只能適應(yīng)一些相對比較固定的參數(shù)傳入(比如像上一節(jié)講到的,構(gòu)建的環(huán)境分為(
      development和production
      )兩種情況,對于一些相對較復(fù)雜的情況以上方法就會捉襟見肘,最為明顯問題是外部的變化可能導(dǎo)致參數(shù)隨之做必要更改,最常見的是文件的位置參數(shù),我們指定歸檔文件的目錄為
      D
      盤下的一個文件夾,現(xiàn)在D盤滿了需要指定為其它盤,則所有的腳本都需要更改,這樣的結(jié)果就是可維護(hù)性差.我們可以把一些較為常用的參數(shù)定義為全局參數(shù),比如常用工具的位置.

      本節(jié)我們將從項(xiàng)目級別,節(jié)點(diǎn)級別,全局級別來講解Jenkins ci提供的參數(shù)配置方案

      項(xiàng)目級別參數(shù)

      本節(jié)部分我們分為參數(shù)構(gòu)建和在項(xiàng)目中定義項(xiàng)目級別參數(shù)來講解.

      參數(shù)化構(gòu)建項(xiàng)目.

      在Jenkins里新建一個自由式項(xiàng)目,勾選This project is parameterized會出現(xiàn)一個Add Parameter
      按鈕,點(diǎn)擊會出現(xiàn)一個下拉框,選擇最后一項(xiàng)'string paramter'創(chuàng)建一個字符串類型參數(shù),在出現(xiàn)的對話框中輸入名稱(我用的是buildenv
      )和默認(rèn)值(默認(rèn)值可以不輸入),在構(gòu)建欄里我們選擇Execute windows bat command,在出現(xiàn)的框中輸入以下內(nèi)容:
      //buildenv為我們定義的參數(shù)名 echo %buildenv%
      點(diǎn)擊ok完成項(xiàng)目創(chuàng)建,此時build now按鈕變成了Build with Parameters
      參數(shù)化構(gòu)建,點(diǎn)擊又會出現(xiàn)一步讓輸入值,有默認(rèn)值可以直接點(diǎn)擊'build',點(diǎn)擊后我們查看控制臺可以看到輸出了我們定義的參數(shù)

      在以后的章節(jié)里也是一樣,不管是Jenkins預(yù)置的參數(shù)還是我們自定義的,使用cmd時都是通過%參數(shù)名%來獲取.

      如果是powershell腳本,則需要使用$env:參數(shù)名來接收參數(shù),比如在powershell命令窗口輸入echo $env:buildenv
      就會達(dá)到和上面cmd一樣的效果.

      需要指出的是,如果在jenkins里直接執(zhí)行powershell命令,需要下載powershell插件.

      項(xiàng)目級別參數(shù)


      以上參數(shù)化構(gòu)建適用于需要手動構(gòu)建的,不是特別頻繁但是參數(shù)又必須動態(tài)指定的情況,這種構(gòu)建缺點(diǎn)也相當(dāng)明顯,因?yàn)槊看涡枰謩又付▍?shù).還有一種方法是指定項(xiàng)目級別的參數(shù),這種方式比直接使用腳本自身參數(shù)要更容易管理,因?yàn)閰?shù)在單獨(dú)的一塊地方定義,并且可以添加描述,使得語義更加明確,并且參數(shù)在單獨(dú)醒目地方出更容易引起關(guān)注.

      下面講解一下如何在項(xiàng)目級別添加環(huán)境變量.

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

      如果需要定義多個參數(shù),換一行書寫就行了,同樣是name=value形式

      大家可能已經(jīng)看到,選項(xiàng)里除了Properties Content外,下面還有Groovy Script
      選項(xiàng),大家不要害怕,這里并不講Groovy,這里可以使用一些簡單的groovy語法來定義參數(shù)變量

      Groovy Script框里輸入的選項(xiàng)如下
      def str="hello,world" return ["greeting":str,"filename":"jenkins.txt"]
      可以使用 def關(guān)鍵字定義一個變量,下面return里的內(nèi)容可以做為參數(shù)在構(gòu)建時使用.比如在bat腳本里可以使用%greeting%
      來獲取鍵為greeting的參數(shù)的值.

      節(jié)點(diǎn)級別參數(shù)


      有些參數(shù)在不同的節(jié)點(diǎn)上是不一樣的,比如說某一個工具的位置,如果我們把它定義為項(xiàng)目級別,由工具在不同節(jié)點(diǎn)上安裝的位置可能是不一樣的,這樣就會造成部分節(jié)點(diǎn)上的構(gòu)建失敗.這時候可以考慮把參數(shù)定義為節(jié)點(diǎn)級別.

      進(jìn)入Manage Jenkins>Manage Nodes,進(jìn)入管理頁面便會看到我們已經(jīng)創(chuàng)建好的Jenkins節(jié)點(diǎn),點(diǎn)擊某個基點(diǎn)后面的齒輪
      圖標(biāo),在出現(xiàn)的界面里找到Node Properties,勾選Environment variables此時便可以輸入?yún)?shù)的名稱和值,點(diǎn)擊Add
      按鈕則可以添加多個參數(shù).完成后點(diǎn)擊Save保存后便可以在腳本里使用剛定義的節(jié)點(diǎn)級別的變量了.

      全局變量


      全局變量對所有節(jié)點(diǎn)都有效,當(dāng)某些變量不會因?yàn)榄h(huán)境的改變而改變,比如說構(gòu)建的版本只有development和production時,就可以定義為全局變量.這樣不需要在每個項(xiàng)目里都重復(fù)定義了.

      全局變量的定義也非常簡單,進(jìn)入Manage Jenkins>Configure System找到Global properties并勾選
      Environment variables出現(xiàn)的界面跟節(jié)點(diǎn)級別配置類似.

      使用文件參數(shù)


      Jenkins提供了靈活的配置選項(xiàng),我們除了可以在Jenkins內(nèi)部配置參數(shù)外,還可以以外部文件的形式提供配置參數(shù),配置參數(shù)為name=value鍵值對形式,必須符合java
      properties文件格式.

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

      我們新建一個自由式項(xiàng)目,滾動到Build Environment欄,勾選Inject environment variables to the build
      process,在Properties File Path選項(xiàng)里輸入配置文件路徑,我放在了E盤里,路徑為E:\testenv.txt
      ,這個文件很簡單,里面就一行內(nèi)容,如下:
      database=sqlserver
      往下流動到Build欄,新建一個 Execute windows bat command,輸入以下內(nèi)容
      echo %database%
      保存后點(diǎn)擊構(gòu)建,可以看到控制臺輸入sqlserver

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          成人av三区 | 欧美无砖砖区免费 | 呦呦色 | 《艳荡性史》免费观看 | 伦理电影91 | 国产hhh | 亚洲vs无码秘 蜜桃少妇小说 | 一区二区三清视频 | 动漫美女被到爽视频 | 91日日夜夜 |