第十四章:详解Jenkins节点配置
2014-03-02:修正對(duì)于lable標(biāo)簽的理解。(1.532.1版本已經(jīng)給出了官方解釋)
2013-12-22:添加JNLP端口修改,修改了一些錯(cuò)誤。
?
Jenkins有個(gè)很強(qiáng)大的功能:分布式構(gòu)建(在Jenkins的配置中叫做節(jié)點(diǎn)),分布式構(gòu)建能夠讓同一套代碼在不同的環(huán)境(如:Windows和Linux系統(tǒng))中編譯、測(cè)試等。這么做的好處一大堆,自己去想。而且Jenkins構(gòu)建的代碼和產(chǎn)物最后自動(dòng)拷貝到主節(jié)點(diǎn)。
注意:如果節(jié)點(diǎn)主機(jī)上不存在JDK,Jenkins會(huì)去自動(dòng)下載,但Oracle對(duì)程序自動(dòng)下載做了限制,會(huì)導(dǎo)致下載失敗,然后一直循環(huán)這個(gè)問(wèn)題。
建議:所有Unix或者Windows機(jī)器的環(huán)境路徑統(tǒng)一(如:JDK、Ant、Maven),好處是便于管理、不容易出現(xiàn)奇葩問(wèn)題。
?
Jenkins版本:1.532(不同版本的配置可能不同)
進(jìn)入節(jié)點(diǎn)配置界面:
系統(tǒng)管理→管理節(jié)點(diǎn)→新建節(jié)點(diǎn)(左上角)
?
節(jié)點(diǎn)名稱:建議使用字母、數(shù)字或字母和數(shù)字的組合。最好見(jiàn)名知意。不建議使用標(biāo)點(diǎn)符號(hào)和中文(中文命名沒(méi)有問(wèn)題,但Job中無(wú)法引用)
Dumb Slave:新建一個(gè)節(jié)點(diǎn)
復(fù)制現(xiàn)有節(jié)點(diǎn):從已存在的節(jié)點(diǎn)中復(fù)制一份配置(如果存在節(jié)點(diǎn)才會(huì)顯示)
點(diǎn)擊ok進(jìn)入下一步配置
?
Name:節(jié)點(diǎn)名稱
Description:節(jié)點(diǎn)描述,支持中文
# of executors:最大同時(shí)構(gòu)建數(shù)量(根據(jù)機(jī)器的性能定,單顆四核cpu建議不要超過(guò)5)【必須為數(shù)字】
Remote FS root:節(jié)點(diǎn)的根目錄(注意:如果目錄不存在,會(huì)自動(dòng)創(chuàng)建目錄。你必須對(duì)該目錄有讀寫權(quán)限,不然會(huì)報(bào)錯(cuò):hudson.util.IOException2: Failed to copy xxxx)
Labels:標(biāo)記(又叫做標(biāo)簽)用來(lái)對(duì)多節(jié)點(diǎn)分組,標(biāo)記之間用空格分隔.例如'refression java6'將會(huì)把一個(gè)節(jié)點(diǎn)標(biāo)記上'regression'和'java6'.
舉例來(lái)說(shuō),如果你有多個(gè)Windows系統(tǒng)的構(gòu)建節(jié)點(diǎn)并且你的Job也需要在Windows系統(tǒng)上運(yùn)行,那么你可以配置所有的Windows系統(tǒng)節(jié)點(diǎn)都標(biāo)記為'windows', 然后把Job也標(biāo)記為'windows'.這樣的話你的Job就不會(huì)運(yùn)行在除了Windows節(jié)點(diǎn)以外的其它節(jié)點(diǎn)之上了.
用法:盡可能的使用這個(gè)節(jié)點(diǎn)/只允許運(yùn)行綁定到這臺(tái)機(jī)器的Job(根據(jù)你的需求,二選一)
Launch method:運(yùn)行方式有四個(gè)選項(xiàng)。建議選擇第1、2種方式配置。詳細(xì)如下:
【推薦】Launch slave agents on Unix machines via SSH ? 在Unix(包括Linux)機(jī)器上通過(guò)SSH通道連接節(jié)點(diǎn) (適用于Unix和Linux)
Host:節(jié)點(diǎn)主機(jī)的ip地址
Credentials:憑據(jù)(如果為空或者不可選擇,請(qǐng)?jiān)?strong>系統(tǒng)管理→Manage Credentials中配置。Manage Credentials的配置非常簡(jiǎn)單,這里就不在描述了。Manage Credentials配置完成后,需刷新節(jié)點(diǎn)配置頁(yè)面才會(huì)顯示。)
Port:端口默認(rèn)22
JavaPath:[可選]JDK路徑,默認(rèn)和master節(jié)點(diǎn)相同。路徑必須指定到Java程序,如:/path/bin/java
JVM Options:[可選]JVM可選參數(shù)
Prefix Start Slave Command:[可選]不知道干什么用的參數(shù)
Suffix Start Slave Command:[可選]不知道干什么用的參數(shù)
?測(cè)試可以使用Unix命令,會(huì)自動(dòng)拼接在[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 ? 通過(guò)Java Web Start連接節(jié)點(diǎn)?(適用于所有支持Java程序的系統(tǒng))
Tunnel connection through:[可選]在端口轉(zhuǎn)發(fā)這種情況下使用
JVM options:[可選]JVM可選參數(shù)
這種方法的缺點(diǎn):如果該節(jié)點(diǎn)宕機(jī)了,主節(jié)點(diǎn)無(wú)法自動(dòng)重啟它。
?
Launch slave via execution of command on the Master ?通過(guò)主節(jié)點(diǎn)的控制臺(tái)連接節(jié)點(diǎn)
?在寫內(nèi)容前吐槽一下Jenkins的幫助,說(shuō)的云里霧里的。應(yīng)該去看該選項(xiàng)下Launch command的幫助。
?Jenkins的開(kāi)發(fā)者考慮到某些企業(yè)可能有N++ 個(gè)節(jié)點(diǎn)(N>=你猜!)。如果在界面配置,那么升級(jí)版本之類的操作會(huì)很麻煩。所以允許你使用shell腳本去配置管理節(jié)點(diǎn)(貌似很方便的樣子)。具體的腳本需要你自己寫。
Launch command:Unix運(yùn)行腳本的命令,如:sh aaa.sh
?這個(gè)選項(xiàng)比Launch slave agents via Java Web Start添加為服務(wù)更加穩(wěn)定(幫助文檔是這么說(shuō)的)。采用這種運(yùn)行方式,那么這個(gè)系統(tǒng)不能登錄任何用戶。這種配置方式是非常的麻煩和折騰。具體請(qǐng)查看?點(diǎn)我去看幫助
Administrator user name:域\管理員賬號(hào)
Password:密碼
Host:節(jié)點(diǎn)主機(jī)IP或者域名
Run service as:
Use Local System User:使用本地系統(tǒng)用戶
Log on using a different account:使用不同的用戶登錄
User name:賬號(hào)
Password:密碼
Use Administrator account given above:使用上面的用戶登錄
Path to java executable:[可選]JDK路徑。必須指定到Java程序,如:C:\Windows\system32\java.exe
JVM options:[可選]JVM可選參數(shù)
Availability:
- Keep this slave on-line as much as possible:盡可能保持節(jié)點(diǎn)在線【推薦】
- Take this slave on-line according to a schedule:根據(jù)時(shí)間表在線(類似于Linux的定時(shí)任務(wù))
Startup Schedule:類似于Linux定時(shí)任務(wù)的時(shí)間,如下:
# 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 DecemberH H 1,15 1-11 *如果使用 H Jenkins會(huì)自動(dòng)提前一段時(shí)間連接節(jié)點(diǎn),避免出現(xiàn)同一時(shí)間高并發(fā)的問(wèn)題
Scheduled Uptime:超過(guò)任務(wù)時(shí)間后延遲多少分鐘離線。如果此數(shù)值大于在線總時(shí)間(單位:分),就會(huì)一直保持在線【必須為數(shù)字】
Keep on-line while jobs are running:當(dāng)有Job在構(gòu)建時(shí)(到達(dá)離線時(shí)間了)繼續(xù)保持在線
- Take this slave on-line when in demand and off-line when idle:讓Jenkins根據(jù)需求自動(dòng)連接或者離線
In demand delay:告訴Jenkins如果有Job需要在此節(jié)點(diǎn)構(gòu)建,需要在任務(wù)隊(duì)列等待多長(zhǎng)時(shí)間才會(huì)進(jìn)入任務(wù)狀態(tài)進(jìn)行構(gòu)建【必須為數(shù)字】
Idle delay:告訴Jenkins多少分鐘內(nèi)如果沒(méi)有Job需要構(gòu)建就離線【必須為數(shù)字】
Node Properties:?
- ?Environment variables:配置環(huán)境變量(可以在腳本中引用,好方便啊\(^o^)/~)
- ?Tool Locations:工具的目錄【推薦】。說(shuō)明:可以替換系統(tǒng)設(shè)置的各種工具目錄。如:JDK目錄、Ant目錄、Maven目錄等。好處就是在不更改Job配置的情況下,不同環(huán)境(如:Windows和Linux) Job配置通用。好方便啊\(^o^)/~
?到此,節(jié)點(diǎn)的配置工作完成了,點(diǎn)擊Save保存。進(jìn)入下一步節(jié)點(diǎn)的連接:
?只介紹Launch slave agents via Java Web Start第二種連接方式,Launch slave agents on Unix machines via SSH點(diǎn)擊保存后會(huì)自動(dòng)連接。因?yàn)?strong>Launch slave via execution of command on the Master和Let Jenkins control this Windows slave as a Windows service選項(xiàng)沒(méi)有配置測(cè)試過(guò),所以大家自行折騰吧。
?
如上圖所示,有兩種方式可以啟動(dòng)節(jié)點(diǎn)(都是JNLP方式。JNLP連接需要端口,默認(rèn)連接端口是隨機(jī)的,端口更改?系統(tǒng)設(shè)置→Configure Global Security→JNLP節(jié)點(diǎn)代理的TCP端口)
你有兩種方式啟動(dòng):
1.Launch agent from browser on slave ?下載文件slave-agent.jnlp文件,雙擊打開(kāi)。
一般用在Windows系統(tǒng)上,需要javaws.exe(在Java的bin目錄中可以找到)程序才能打開(kāi)。如果提示錯(cuò)誤,請(qǐng)卸載JDK后重新安裝。成功啟動(dòng)如下圖所示:
?
點(diǎn)擊左上角的File選擇Install as a service就可以添加為Windows的服務(wù)了(默認(rèn)開(kāi)機(jī)自動(dòng)啟動(dòng))。
2.Run from slave command line ??javaws ?http://xxxx/slave-agent.jnlp ?如果你配置了權(quán)限那么后面還有一串看不懂的隨機(jī)Key
?
下載slave.jar到本地,然后進(jìn)入存放slave.jar的目錄,復(fù)制粘貼并運(yùn)行?java -jar slave.jar -jnlpUrl http://xxxxx ?即可啟動(dòng)。
轉(zhuǎn)載于:https://www.cnblogs.com/fosilzhou/articles/3871359.html
總結(jié)
以上是生活随笔為你收集整理的第十四章:详解Jenkins节点配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 普通图片在字模软件中的提取方法
- 下一篇: iOS常用代码总结