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種方式配置。詳細如下:
-
【推薦】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]
-
【推薦】Launch slave agents via Java Web Start 通過Java Web Start連接節點 (適用於所有支持Java程序的系統)
Tunnel connection through:[可選]在端口轉發這種情況下使用
JVM options:[可選]JVM可選參數
這種方法的缺點:如果該節點宕機了,主節點無法自動重啟它。
-
Launch slave via execution of command on the Master 通過主節點的控制台連接節點
在寫內容前吐槽一下Jenkins的幫助,說的雲里霧里的。應該去看該選項下Launch command的幫助。
Jenkins的開發者考慮到某些企業可能有N++ 個節點(N>=你猜!)。如果在界面配置,那么升級版本之類的操作會很麻煩。所以允許你使用shell腳本去配置管理節點(貌似很方便的樣子)。具體的腳本需要你自己寫。
Launch command:Unix運行腳本的命令,如:sh aaa.sh
- 【不建議使用】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 Master和Let 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 即可啟動。