第十四章:詳解Jenkins節點配置


2014-03-02:修正對於lable標簽的理解。(1.532.1版本已經給出了官方解釋)

2013-12-22:添加JNLP端口修改,修改了一些錯誤。

 

Jenkins有個很強大的功能:分布式構建(在Jenkins的配置中叫做節點),分布式構建能夠讓同一套代碼在不同的環境(如:Windows和Linux系統)中編譯、測試等。這么做的好處一大堆,自己去想。而且Jenkins構建的代碼和產物最后自動拷貝到主節點。

注意:如果節點主機上不存在JDK,Jenkins會去自動下載,但Oracle對程序自動下載做了限制,會導致下載失敗,然后一直循環這個問題。

建議:所有Unix或者Windows機器的環境路徑統一(如:JDK、Ant、Maven),好處是便於管理、不容易出現奇葩問題。

 

Jenkins版本:1.532(不同版本的配置可能不同)

進入節點配置界面:

系統管理→管理節點→新建節點(左上角)

 

節點名稱:建議使用字母、數字或字母和數字的組合。最好見名知意。不建議使用標點符號和中文(中文命名沒有問題,但Job中無法引用)

Dumb Slave:新建一個節點

復制現有節點:從已存在的節點中復制一份配置(如果存在節點才會顯示)

點擊ok進入下一步配置

 

Name:節點名稱

Description:節點描述,支持中文

# of executors:最大同時構建數量(根據機器的性能定,單顆四核cpu建議不要超過5)【必須為數字】

Remote FS root:節點的根目錄(注意:如果目錄不存在,會自動創建目錄。你必須對該目錄有讀寫權限,不然會報錯:hudson.util.IOException2: Failed to copy xxxx)

Labels:標記(又叫做標簽)用來對多節點分組,標記之間用空格分隔.例如'refression java6'將會把一個節點標記上'regression'和'java6'.

  舉例來說,如果你有多個Windows系統的構建節點並且你的Job也需要在Windows系統上運行,那么你可以配置所有的Windows系統節點都標記為'windows', 然后把Job也標記為'windows'.這樣的話你的Job就不會運行在除了Windows節點以外的其它節點之上了.

用法:盡可能的使用這個節點/只允許運行綁定到這台機器的Job(根據你的需求,二選一)

Launch method:運行方式有四個選項。建議選擇第1、2種方式配置。詳細如下:

  1. 【推薦】Launch slave agents on Unix machines via SSH   在Unix(包括Linux)機器上通過SSH通道連接節點 (適用於Unix和Linux)

      Host:節點主機的ip地址

      Credentials:憑據(如果為空或者不可選擇,請在系統管理→Manage Credentials中配置。Manage Credentials的配置非常簡單,這里就不在描述了。Manage Credentials配置完成后,需刷新節點配置頁面才會顯示。)

      Port:端口默認22

      JavaPath:[可選]JDK路徑,默認和master節點相同。路徑必須指定到Java程序,如:/path/bin/java

      JVM Options:[可選]JVM可選參數

      Prefix Start Slave Command:[可選]不知道干什么用的參數

      Suffix Start Slave Command:[可選]不知道干什么用的參數

       測試可以使用Unix命令,會自動拼接在[SSH] Starting slave process:[Prefix Start Slave Command] cd '/path' && /path/bin/java -jar slave.jar [Suffix Start Slave Command]

  2. 【推薦】Launch slave agents via Java Web Start   通過Java Web Start連接節點 (適用於所有支持Java程序的系統)

      Tunnel connection through:[可選]在端口轉發這種情況下使用

      JVM options:[可選]JVM可選參數

      這種方法的缺點:如果該節點宕機了,主節點無法自動重啟它。

       

  3. Launch slave via execution of command on the Master  通過主節點的控制台連接節點

       在寫內容前吐槽一下Jenkins的幫助,說的雲里霧里的。應該去看該選項下Launch command的幫助。

       Jenkins的開發者考慮到某些企業可能有N++ 個節點(N>=你猜!)。如果在界面配置,那么升級版本之類的操作會很麻煩。所以允許你使用shell腳本去配置管理節點(貌似很方便的樣子)。具體的腳本需要你自己寫。

      Launch command:Unix運行腳本的命令,如:sh aaa.sh

  4. 【不建議使用】Let Jenkins control this Windows slave as a Windows service   讓Jenkins節點添加到Windows服務中

       這個選項比Launch slave agents via Java Web Start添加為服務更加穩定(幫助文檔是這么說的)。采用這種運行方式,那么這個系統不能登錄任何用戶。這種配置方式是非常的麻煩和折騰。具體請查看 點我去看幫助

      Administrator user name:域\管理員賬號

      Password:密碼

      Host:節點主機IP或者域名

      Run service as:

        Use Local System User:使用本地系統用戶

        Log on using a different account:使用不同的用戶登錄

          User name:賬號

          Password:密碼

        Use Administrator account given above:使用上面的用戶登錄

      Path to java executable:[可選]JDK路徑。必須指定到Java程序,如:C:\Windows\system32\java.exe

      JVM options:[可選]JVM可選參數

    

Availability:

  • Keep this slave on-line as much as possible:盡可能保持節點在線【推薦】
  • Take this slave on-line according to a schedule:根據時間表在線(類似於Linux的定時任務)

Startup Schedule:類似於Linux定時任務的時間,如下:

                   # every fifteen minutes (perhaps at :07, :22, :37, :52)
                   H/15 * * * *
                   # every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
                   H(0-29)/10 * * * *
                   # once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
                   H 9-16/2 * * 1-5
                   # once a day on the 1st and 15th of every month except December
                   H H 1,15 1-11 *
如果使用 H Jenkins會自動提前一段時間連接節點,避免出現同一時間高並發的問題

Scheduled Uptime:超過任務時間后延遲多少分鍾離線。如果此數值大於在線總時間(單位:分),就會一直保持在線【必須為數字】

Keep on-line while jobs are running:當有Job在構建時(到達離線時間了)繼續保持在線

  • Take this slave on-line when in demand and off-line when idle:讓Jenkins根據需求自動連接或者離線

In demand delay:告訴Jenkins如果有Job需要在此節點構建,需要在任務隊列等待多長時間才會進入任務狀態進行構建【必須為數字】

Idle delay:告訴Jenkins多少分鍾內如果沒有Job需要構建就離線【必須為數字】

Node Properties: 

  •  Environment variables:配置環境變量(可以在腳本中引用,好方便啊\(^o^)/~)
  •  Tool Locations:工具的目錄【推薦】。說明:可以替換系統設置的各種工具目錄。如:JDK目錄、Ant目錄、Maven目錄等。好處就是在不更改Job配置的情況下,不同環境(如:Windows和Linux) Job配置通用。好方便啊\(^o^)/~

 到此,節點的配置工作完成了,點擊Save保存。進入下一步節點的連接:

 只介紹Launch slave agents via Java Web Start第二種連接方式,Launch slave agents on Unix machines via SSH點擊保存后會自動連接。因為Launch slave via execution of command on the MasterLet Jenkins control this Windows slave as a Windows service選項沒有配置測試過,所以大家自行折騰吧。

 

如上圖所示,有兩種方式可以啟動節點(都是JNLP方式。JNLP連接需要端口,默認連接端口是隨機的,端口更改 系統設置→Configure Global Security→JNLP節點代理的TCP端口)

你有兩種方式啟動:

1.Launch agent from browser on slave  下載文件slave-agent.jnlp文件,雙擊打開。

一般用在Windows系統上,需要javaws.exe(在Java的bin目錄中可以找到)程序才能打開。如果提示錯誤,請卸載JDK后重新安裝。成功啟動如下圖所示:

 

點擊左上角的File選擇Install as a service就可以添加為Windows的服務了(默認開機自動啟動)。

2.Run from slave command line   javaws  http://xxxx/slave-agent.jnlp  如果你配置了權限那么后面還有一串看不懂的隨機Key

 

下載slave.jar到本地,然后進入存放slave.jar的目錄,復制粘貼並運行 java -jar slave.jar -jnlpUrl http://xxxxx  即可啟動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM