Jenkins分布式远程构建终极解决方案(linux)

本文详细介绍了如何在CentOS环境中配置Jenkins分布式节点,以分发job构建任务,减轻master节点压力。涉及环境准备、节点配置、job设置以及异常处理,包括ClassNotFoundException解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

随着公司产品线不断增加,在一台服务器上构建多个项目无疑会带来很大负载,本篇将实践如何利用jenkins分布式来构建job,当job量足够大的时候,此举可以有效的缓解jenkins-master上的压力。

2.环境准备

IP操作系统功能
192.168.50.72Centos7jenkins-master
10.20.32.183Centos7jenkins-slave(无需安装jenkins
10.20.32.187Centos7被部署端

3.组件安装

软件路径描述
JDK/opt/idss/jenkins/jdk/opt/idss/jenkins为自定义远程目录
MAVEN/home/install/apache-maven-3.6.3
GIT/usr/bin/git

4.节点配置

4.1 在jenkins上点击 “系统管理”--->“管理节点”--->“新建节点”,填写节点名称,勾选选项,点击ok开始新建节点

4.2  配置信息如下

 

配置介绍:

名称:节点的名称

并发构建数:使用处理器个数作为其值会是比较好的选择(可以点击后面的?号来查看详细信息)设置为0即表示不删除该节点的配置但是不启动该节点

远程工作目录:操作服务器的目录

标签:为节点设置标签(在job配置中使用)

用法:选择尽可能使用的话,在构建job的时候会优先在该节点上构建;选择绑定job的话,需要在运行的节点中指定从节点.

启动方式:这里是选择通过的ssh,输出机器的用户名和密码即可登录

Host Key Verification Strategy:选择不验证(non verifying verification strategy)

可用性:尽量保持代码在线(这里仅仅做测试,不考虑性能消耗..)

接下来要在节点属性中添加一些工具列表,本次实验至少需要jdk、maven、git,因此必须得在这里进行配置,地址选择对应slave服务器上的地址

4.3 Credentials配置如下

4.4 查看节点连接状态

5.构建job配置

在job-限制项目的运行节点输入设置的节点标签,配置完成后保存,点击构建即可

6. 异常处理

Jenkins的slave异常:Exception in thread "main" java.lang.ClassNotFoundException: hudson.remoting.Launcher 

当任务分配到slave上执行时,报如下错误:

Parsing POMs
Established TCP socket on 38257
maven33-agent.jar already up to date
maven33-interceptor.jar already up to date
maven3-interceptor-commons.jar already up to date
[b012ef95d917292e062fe3d70c7a9b01] $ java -cp /var/lib/jenkins/maven33-agent.jar:/usr/install/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/usr/install/apache-maven-3.3.9/conf/logging jenkins.maven3.agent.Maven33Main /usr/install/apache-maven-3.3.9 /var/lib/jenkins/slave.jar /var/lib/jenkins/maven33-interceptor.jar /var/lib/jenkins/maven3-interceptor-commons.jar 38257
Exception in thread "main" java.lang.ClassNotFoundException: hudson.remoting.Launcher
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
	at jenkins.maven3.agent.Maven33Main.main(Maven33Main.java:133)
	at jenkins.maven3.agent.Maven33Main.main(Maven33Main.java:64)


ERROR: Failed to parse POMs
java.io.EOFException: unexpected stream termination
	at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:365)
	at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:310)
	at hudson.slaves.Channels.forProcess(Channels.java:115)
	at hudson.maven.AbstractMavenProcessFactory.newProcess(AbstractMavenProcessFactory.java:294)
	at hudson.maven.ProcessCache.get(ProcessCache.java:236)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:798)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
	at hudson.model.Run.execute(Run.java:1730)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:544)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:405)


搜索了下解决办法:说是重连下slave。照做,问题解决。看下master连接slave的日志信息,我想原因应该是我修改过slave的环境变量hostname。不知道修改其他环境变量是否也会有同样的影响。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师之路魂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值