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