在前面使用ant自動構建的helloworld的基礎上,實現master把任務分發給slave
試驗所用的三臺機子(1臺master:ubuntu,兩臺slave:分別爲ubuntu、windows)
一、master上的環境設置:
1、 tomcat下部署的jenkins;
2、 gerrit代碼審覈服務器:(在本例中只用來充當源碼倉庫)
gerrit的端口可以自行設置更改,具體配置文件在GRRRIT_SITE/etc/gerrit.config
canonicalWebUrl=http://master_ip:8081 之前由於設置將此設置成127.0.0.1:8081導致只能在本地訪問,給自己提個醒
3、 ant/java的安裝配置,請設置好變量
二、slave上的環境設置:
1、 windows中安裝cygwin,記得install ssh服務;
a) 在cygwin的shell中輸入ssh-host-config
b) 全程yes
c) net start sshd;net stop sshd(用來關閉和開啓ssh服務)
2、 安裝git/安裝java/安裝ant(安裝較爲簡單,自行網上查閱)
PS:
實驗中出現被分配任務後無法調用本地ant,最終在jenkins master上選用使用指定版本的ant,則master會自動將需要的ant包下載到slave的指定工作空間下的tool目錄,且自動調用。
將JAVA加入path中請使用完整的路徑,不要用%JAVA_HOME%來簡寫;並且將JAVA_HOME/lib下的tools.jar、dt.jar拷貝到Program Files/Java/jre6/lib下。否則可能出現unable to locate tools.jar的錯誤。
3、 ubuntu slave的設置和master的基本一致。
#實驗中出現安裝jdk後Jenkins無法識別的情況,而且已經確認jdk的環境變量已經設置好。之後改裝openjdk,讓其自行設置(jdk6/jdk7自選):
sudo apt-get install openjdk-7-jdk
sudo apt-get install openjdk-6-jdk
sudo apt-get install ant
出現沒法下載的情況時請使用 sudo apt-get update 來獲得最新的軟件包列表。
三、通過ssh實現遠程訪問(該方法實現sshd無密碼登陸)
a) 生成密鑰對:ssh-keygen –t rsa
b) 將id_rsa.pub加入到要訪問機器的~/.ssh/authorized_keys
ssh-copy-id –i ~/.ssh/id_rsa.pub username@servername
之後就能使用ssh username@servername 無密碼登陸
PS:/etc/ssh/sshd_config 中開啓PubkeyAuthentication yes
若生成密鑰時使用了密碼,則在登陸時候仍需要密碼,此時可以使用ssh-agent來幫忙。使用ssh-add將自己的密鑰交給其管理,只要輸入一次密碼之後就能無密碼登陸。
四、節點設置和任務分發
1、 在master上建立ubuntu slave 節點:
2、 在master上建立windows slave 節點:設置與上圖相仿。
3、 修改helloworld工程設置,從而實現給slave分配任務:
4、之後build就可以了。
PS:Windows下使用指定ant version。(手動安裝的ant不知爲何沒法被調用,依照下圖使用指定版本ANT)
參考資料:
Jenkins Master/Slave架構:
http://www.cnblogs.com/itech/archive/2011/11/11/2245849.html
Jenkins的Linux的Slave的配置:
http://www.cnblogs.com/itech/archive/2011/11/10/2244690.html
Jenkins的Windows的Slave的配置:
http://www.cnblogs.com/itech/archive/2011/11/09/2243025.html