jenkins分布式构建和部署(master-slave)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/achenyuan/article/details/86644954

jenkins分布式构建和部署(master-slave)

前言

分布式部署可以理解为jenkins的分布式部署工作空间,通过将构建过程分配到从属slave结点上从而减轻master节点的压力,同时可以同时构建多个,有点类似负载均衡的概念。

  1. 一种方式是一台jenkins服务器做master节点,在master节点上构建,然后通过ssh,将包传输到服务器上完成部署
  2. 另一种方式就是本文说的master-slave分布式部署,将构建过程分配到slave节点上完成部署,注意,slave节点上不需要安装jenkins服务

建议:所有Linux或者Windows机器的环境路径统一(如:JDK、Maven),安装位置和jenkins所在服务器的JDK和maven必须一致,也就是说jenkins所在服务器和各个节点服务器中的JDK和Maven目录和文件名都是一样的。以便于管理、不容易出现问题。
也只是建议,比如windows和linux系统就不可能做到一样,所以,只是建议,可以通过配置节点服务器属性找到jdk,maven工具位置。

前提条件是你已经安装了jenkins工具,一般建议使得war方式安装。
我的master使用windows系统,slave节点使用centos7系统。

步骤

增加slave节点

系统管理->节点管理->新建节点->编辑节点名称,选择固定节点即可,即可编辑节点属性

  1. 描述:自定义,至少描述清楚
  2. 并必构建:填写1
  3. 远程工作目录:节点下载的源码都会放在这个目录下,这是slave节点的jenkins工作空间,比如:/home/jenkins
  4. 标签:标记(又叫做标签)用来对多节点分组,标记之间用空格分隔.例如’refression java6’将会把一个节点标记上’regression’和’java6’.
    举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,那么你可以配置所有的Windows系统节点都标记为’windows’, 然后把Job也标记为’windows’.这样的话你的Job就不会运行在除了Windows节点以外的其它节点之上了。这里填ip也可以,比如192.168.2.33
  5. 用法:选择只允许运行绑定到这台机器的Job。
  6. 启动方式:选择Launch slave agent via SSH。下面会出现一些属性配置
    1. 主机:填写ip地址
    2. Credentials:填写登陆这个ip服务器的帐户和密码
    3. Host Key Verification Strategy:选择Non verifying Verifycation Strategy,如果选择其它会报错Key exchange was not finished,connection is closed
    4. 高级按钮不用点击,我们不在这里面配置节点 属性
  7. 节点属性:
    配置一些slave节点的工具位置和环境变量,如果我们不在这里配置的话,有可能找不到工具的位置。
    比如master-slave都是windows机器,而工具安装安装也完全一样,这里可以不配置。如果master-slave是windows-linux,那么在构建时可能出现问题。
    1. 工具位置
    在这里配置jdk,maven, nodejs,gradle工具的位置, 点击新增按钮,有下拉框工具可以选择,下拉框有多少选择取决于我们在全局工具配置里配置了多少工具,比如全局工具配置里没有设置任何一个git,那么这里的下拉框是没有git的。
    2. 环境变量
    这里不用配置了,因为像配置JAVA_HOME我们在工具位置已经指定了jdk工具位置了。

全部配置截图如下
在这里插入图片描述

在这里插入图片描述

至些slave配置完成,刚配置完成显示连接不成功,这时候进入节点状态页,点击启动代理即可

新建job,并分配到slave节点上构建

新建一个名字是TestSlave的job,新建过程这里不讲。进入配置页,在General那栏,选中限制项目的运行节点,然后将上面创建的slave填写进去即可。

总结

这种方式比较适合slave节点是linux系统,稳定,不太适合slave节点是windows系统的,如果你强制使用的话,那么虽然认证成功,但还是失败,比如

扫描二维码关注公众号,回复: 6000713 查看本文章
ERROR: null
java.util.concurrent.CancellationException
	at java.util.concurrent.FutureTask.report(FutureTask.java:121)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:902)
	at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:293)
	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
	at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:71)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
[01/25/19 14:40:16] Launch failed - cleaning up connection
[01/25/19 14:40:16] [SSH] 连接关闭。
SSHLauncher{host='192.168.1.244', port=22, credentialsId='fe06086d-a534-4800-88b0-abee4f66fe35', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=210, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.NonVerifyingKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[01/25/19 14:40:16] [SSH] Opening SSH connection to 192.168.1.244:22.
[01/25/19 14:40:16] [SSH] WARNING: SSH Host Keys are not being verified. Man-in-the-middle attacks may be possible against this connection.
[01/25/19 14:40:17] [SSH] 认证成功。
[01/25/19 14:40:17] [SSH] The remote user's environment is:
???????? 1 ? cmdlet Set-Variable
?????????:

windows适用的节点配置

上面启动方式选择了Launch slave agents via SSh,这种方式在linux上比较稳定。
在windows上启动方式适合选择Launch agent via Java Web Start。默认没有Launch agent via Java Web Start。按如下方式打开
系统管理->全局安全配置->代理项的JNLP代理协议的TCP端口选择指定端口,填写端口9595,因为master机器是有防为墙的,除非关闭防火墙,否则不能选择随机选取项。
插件管理选中,结果如下
在这里插入图片描述

这样配置即可打开Launch agent via Java Web Start选项。

配置slave节点步骤

配置方式和上面的一样,除了启动方式适合选择Launch agent via Java Web Start

启动

下载安装节点服务
在这里插入图片描述

点击Launch,下载文件为slave-agent.jnlp,使用文件打开文件,如果ip是127.0.0.1或localhost则替换成slave机器能访问到ip,毕竟slave节点要连接master节点。
slave-agent.jnlp拷贝到slave机器上,双击运行直到出现下图表示连成成功
在这里插入图片描述
连接成功后

将连接程序安装成服务

可以点击File,找到Install as a service,将slave安装成windows服务
在这里插入图片描述
大功告成。在master查看slave节点的最终结果如下图
在这里插入图片描述

总结

这种方式适用windows,不安全

问题

问题Caused by: hudson.plugins.git.GitException: Command “git.exe fetch --tags --progress http://xx.git +refs/heads/:refs/remotes/origin/” returned status code 128

多半也帐户问题,我刚配置也出现这个问题,后面也不知道为什么就好了,百度了一圈没找到解决办法。应该是用了帐户就行了,重现不了,所以没办法解答。

参考
jenkins集群测试环境原理、部署及常见问题解决
Jenkins 主备master-slave模式搭建

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/86644954