Jenkins 主備master-slave模式搭建


 

jenkins的版本是2.70,使用下來感覺是一個不錯的版本,至於如何搭建jenkins,在此就不多說了,推薦的方法是先安裝tomcat,然后再加jenkins.war放在tomcat的webapp路徑下來啟動jenkins會比較好,這樣不存在權限的問題,否則會出現root和jenkins用戶權限的相關問題。

由於我的其中一台機器是centos的,沒有圖形化Jenkins,所以將這台centos作為jenkins master,安裝jenkins。

在我們需要不同平台來出不同類型的包時,比如,需要windows平台打exe文件,需要ios系統打ipa的文件,需要linux系統打so,jar等,這種master-slaver的模式就很適用了。 

以下分別介紹了當slave是mac系統的時候,當slave時centos系統的時候,當slave是windows的系統的時候,如何設置

一、當slave是mac系統的時候

先說說jenkins-master的設置:

1.系統管理-->管理節點-->新建節點

2.配置新建節點

Name:可以隨意命名,用來標記slave機器,我個人喜歡標記為slave機器的系統,比如server-ios

描述:隨意,一般設置為slave機器的ip地址

of excutors:slave主機slave的並行數,即同時可以下發多少個job到slave上執行

遠程工作目錄:用來放工程的文件夾,jenkins master上設置的下載的代碼會放到這個工作目錄下。

標簽:標簽一般設置為slave 主機的IP

用法:選擇“只允許運行綁定在這台機器的job”

啟動方式:選擇“Lanch agent via Java Web Start”   

    默認是沒有這個選項的,需要做設置。參考:http://blog.csdn.net/e295166319/article/details/54946966

    該版本的配置如下:

 

Avalibility:keep this agent online as much as possible 

如果要設置slave機器上對應的環境變量,可以勾選如下項設置:

至此,slave的設置就算結束了。

3.下載節點服務

slave設置結束后,會看到如下圖,點擊這個"Launch"會下載一個slave-agent.jnlp的文件。

4.將這個slave-agent.jnlp文件上傳到slave機器上剛才設置的‘遠程工作目錄’下,雙擊這個文件,會跳出如下:

然后點擊‘運行’,會看到如下:

注意,這個圖框不能關掉,縮小就可以了,如果關掉,slave就會掉線,同理,如果發現slave不是在線狀態,再次雙擊slave-agent.jnlp打開這個進程即可。

表示slave機器已經連接上了,此時查看master jenkins上,就可以正常看到slave機器是在線的,如下:

 

如上,server-ios就是剛才設置的slave主機,對應的系統類型,存儲大小都是有的。

5.在jenkins上設置job下發到slave機器上執行

(1)master jenkins上點擊‘新建’,新建一個自由風格的任務

(2)勾選參數化構建過程,設置如下:

(2.1)選擇Node,如下

(2.2)然后默認的任務下發節點為剛才設置的server-ios;其中Name可隨意設置,一般比較直觀的,會設置代碼工程名。

6.源碼下載

 

7.添加構建腳本

最后點擊構建的時候,會在執行狀態中看到,已經下發到slave上,如下

這個任務就是剛才新建的任務,同樣登陸slave機器上的工作目錄(即前面節點設置的‘遠程工作目錄’),可以看到這個工程,如下:

至此,jenkins master-slave就算結束了。

二、當slave是centos系統的時候

同樣,先說說如何再jenkins-master上設置節點

1.創建節點步驟和“當slave是mac系統的時候”一樣,節點界面也是類似,我的如下:

2.節點保存后顯示如下:

由於centos是非圖形化界面的,所以傾向於使用命令行方式"Run from agent command line"啟動slave.

如上截圖,首先下載slave.jar,並放到centos slave的工作目錄下(工作目錄根據自己的設置,即新建節點時設置的‘遠程工作目錄’),我的遠程工作目錄如上設置為/root/src/,在slave.jar放到slave上后,執行dos2unix slave.jar;chmod 777 slave.jar后,執行上面截圖的命令:

java -jar slave.jar -jnlpUrl http://192.168.8.246:8080/jenkins/computer/centos-233/slave-agent.jnlp -secret 0576e4e935a2d096f994dc5b0009737566dc2cc728efc1c440f3615607e697   &

設置后台運行,如果顯示出現connected 表示slave啟動成功,如下:

這時在jenkins master上看狀態,顯示在線,如下:

各項都能看到,至此,slave 已經啟動了,關於如何下發任務到slave上,參考第一部分"當slave是mac的時候"即可。

【【備注:如果你是使用javaws 命令調jnlp文件,你可能需要做如下操作

  yum -y install libX11

  yum -y install libXext

  yum -y install  libXrender

  yum -y install  libXtst

】】

說明:使用上面的‘lanch agent with java web start ’方法在slave上執行命令來啟動slave,這種方式對於centos來說,就我個人使用發現不太穩定,后面在網上搜到一種更好的方法,參考:http://blog.csdn.net/liuchunming033/article/details/52025541

我自己的設置如下:

其中我采用的是用戶名密碼的那種,使用的是從節點的登陸用戶名密碼,root/$password

 但是在lanch的時候會報錯,找不到java,此時需要在設置從節點的時候,添加對應的環境變量,如下:

這種方法不需要下載jnlp和slave.jar文件到slave的機器上,會直接使用上面填寫的用戶名和密碼來登陸slave,lunch過程中可能還需要java來調用某個服務,所以需要指定jdk的路徑(具體過程沒有詳細研究過)。

 

三、當slave是windows系統的時候

同樣,先說說如何在jenkins-master上設置節點,如下:

節點設置后,查看節點如下:

然后點擊“window_211”,顯示如下頁面,

點擊‘launch’下載slave-agent.jnlp文件,復制該文件到windows slave主機上,放在節點設置時設置的“遠程工作目錄”下,雙擊該jnlp文件

然后顯示如下:

然后顯示如下connected表示連接成功,如下:

此時,查看jenkins master 主機上,顯示已連接,如下:

 至於節點的使用,參考“一、當slave是mac系統的時候”其中的任務設置即可。

 

備注:在配置當slave是centos和windows的時候,請先都一下“一、當salve是mac系統的時候”,centos和windows系統,除了節點的設置和連接不太一樣,其他和mac slave的配置和使用是一樣的,比如節點的使用,slave主機上是圖框顯示已經連接狀態時,圖框不能關掉,直接最小就好了。

我們可以根據任務對系統的而不同需求,下發任務到不同的節點,在配置任務時可以勾選“Restrict where this project can be run”,然后添加可用的節點lable,多個lable之間用 “||” 分隔,如下:

 

  也可以參考 “一、當salve是mac系統的時候” 章節部分的任務設置那里,設置Node的方式指定slave機器。

此外,如果slave是第一次下載代碼,需要添加slave的key到gerrit上,並在slave上先下載一次代碼看看時候ok,我遇到了詢問時候要將gerrit 對應的host ip到known hosts中,需要收到輸入'yes',如下:

(備注:如果是windows環境,可以先安裝一個git bash ,然后在git bash下執行git clone 過程中添加信任關系)

下次就不要了。

 

我遇到一個問題:(希望對你有幫助)

場景:我的centos-204是一台centos的機器,本來用上面的centos slave方式搭建ok的,一直在使用中,之前重啟機器slave相關服務也是可以自動起來的,但是最近我覺得我的這台機器構建太慢了,讓運維幫我加成四核的cpu,結果他加完了,重啟了機器,slave相關服務就怎么也起不來,一直報錯:

沒辦法,查詢了一圈還是還找到答案,后面干脆重新裝了centos-204,啟動方式還是“lunch slave agent via SSH”,依然起不來,着急啊,后面換成‘lunch slave agent via java web start’,然后重新下來slave.jar放到centos-204機器上配置的工作目錄下,然后在slave.jar所在的路徑下執行啟動命令(&后台執行):

 

 

java -jar slave.jar -jnlpUrl http://192.168.8.246:8080/jenkins/computer/centos-204/slave-agent.jnlp -secret 40aa8b30d63226290a25a4e18e3bdfe867b975bd24d5e1fbbc46642f2d9d4d &

 

 

參考:

http://blog.csdn.net/jymn_chen/article/details/39931469

https://www.cnblogs.com/derekchen/p/5892286.html

http://blog.csdn.net/e295166319/article/details/54946966

https://www.jianshu.com/p/70982c43c3d1

 


免責聲明!

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



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