使用Docker构造Jenkins集群

Docker运行

作者:

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节点

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注