http://kurenai.elastos.org/2013/03/22/jenkins%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%88%E5%9B%9B%EF%BC%89-masterslave%E7%9A%84%E5%88%9D%E6%AD%A5%E8%AE%A4%E8%AF%86/
在前面使用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