使用Docker构造Jenkins集群

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2015/08/29/docker-with-jenkins/

Jenkins作为常用的CI功能自然是不用说了,如果运行在上面的项目有很多,而且对于环境的要求各不相同就稍微有点复杂了。

比如一个Java项目,使用maven构建,Java语言等级为8,但是有部分代码又希望保有java7的语言等级,那么环境上的配置就稍微复杂了一点。

如果还有其他比如Python,NodeJs项目,那么这个机器的环境就极为复杂了。

 

Jenkins本身是支持主从节点的,也就是说具体的构建是可以指定由某个节点完成的。

也就意味着我们只需要提供一个由所需环境的从机即可。当然,由一个独立的主机来提供是最好的,但是很多时候并没有那么多资源,而且环境需求也多变。

这种情况下Docker就是一个很好的选择了,我们来尝试用Docker提供一个Java8带maven的环境。

Jenkins主从模式可以有四种方式实现,我们选择最简单的,从ssh登录。

整体配置如下

FROM maven:3-jdk-8
RUN apt-getupdate && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN mkdir /var/jenkins

RUN echo'root:jenkins' | chpasswd
RUN sed -i's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

RUN sed's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE"in users profile"
RUN echo"export VISIBLE=now" >> /etc/profile

EXPOSE22
CMD ["/usr/sbin/sshd","-D"]

密码是通过echo 'root:jenkins' | chpasswd设定的,即root密码jenkins。

运行这个docker image的时候把端口映射出来,比如-p 7001:22,在jenkins中配置这个端口就行了。

Docker运行

Jenkins节点

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2015/08/29/docker-with-jenkins/

发表评论