欢迎您, 来到 宁时修博客.^_^

Jenkins自动化 持续集成05--Jenkins master-slave架构

2018/11/09 林木立 Jenkins 1654
Jenkins自动化 持续集成

一、Master-Slave架构

    Jenkins的Master-Slave分布式架构主要是为了解决Jenkins单点构建任务多、负载较高、性能不足的场景。

    Master-Slave相当于Server和Agent的概念。Master提供web接口让用户来管理job和Slave,job可以运行在Master本机或者被分配到Slave上运行构建。一个Master(Jenkins服务所在机器)可以关联多个Slave用来为不同的job或相同的job的不同配置来服务。



二、部署Slave

    Slave服务器必须要有Java环境:

yum install -y java-1.8.0-openjdk

    如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。

    建议:所有Linux或者Windows机器的环境路径统一(如:JDK、Maven),安装位置和jenkins所在服务器的JDK和maven必须一致,也就是说jenkins所在服务器和各个节点服务器中的JDK和Maven目录和文件名都是一样的。以便于管理、不容易出现问题。



    系统管理--节点管理--新建节点:

        01.png

        08.png

        配置凭据,也就是配置slave所在服务器用户和密码。

        02.png

        保存之后,如无误便会自动启动slave节点了。

04.png

        在jenkins-slave服务器上可以看到slave进程:

[root@web ~]# ps -ef|grep jenkins
root     113665 113524  0 21:12 ?        00:00:00 bash -c cd "/var/lib/jenkins" && java  -jar remoting.jar -workDir /var/lib/jenkins
root     113672 113665  5 21:12 ?        00:00:11 java -jar remoting.jar -workDir /var/lib/jenkins
root     114200  58250  0 21:16 pts/0    00:00:00 grep --color=auto jenkins


三、Job配置

    点击job名--配置--选择限制项目的运行节点:

    然后输入slave节点名称或者标签名

    05.png


四、测试构建

    06.png

    查看控制台输出,发现构建失败。

    03.png


    回想一下,Jenkins在jenkins服务器上是以jenkins用户运行的,但是在slave服务器上是以root用户执行的,所以我们要将slave服务器上的root用户的密钥传给gitlab。

    再次构建:

        11.png

    上图我们可以看到这是在 slave服务器构建成功的。


    查看slave的workspace:

    08.png

    之后可以通过脚本,比如借助rsync、ansible、saltstack等工具将代码分发至WEB服务器上。



五、利用pipeline构建测试

    上一章已弄好 pipeline,那只是在master机器,这次在slave上测试。

    我们只需更改gitlab项目里的jenkinsfile文件:

    12.png

      添加 slave名称,然后构建:

    13.png

        也是在slave服务器上构建的。

        利用pipeline脚本,我们可以直接在脚本里使用scp将拉取、构建(Java代码需要)好的分发至WEB服务器上,而不用再写其他shell脚本分发,有兴趣的可以看上一章的末尾。


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群