描述:
Jenkins本身已经支持分布式架构,我们可以为每个构建项目,在并行运行作业的多个代理之间平衡工作负载,或者使用不同的环境如 c++项目有 windows 环境和 linux 构建需求那我们就可以分别添加 win 和 linux 供调度。
Jenkins控制器是Jenkins安装中的原始节点,用于管理代理并协调代理工作,包括安排代理和监控代理的工作。Jenkins代理节点使用网络连接到Jenkins控制器,同时代理节点也需要安装Java环境。Jenkins代理节点支持在物理机器、虚拟机、Kubernetes集群和Docker映像中启动。
详细可参考 jenkin 官网:Managing Nodes (jenkins.io),本篇文章只涉及 windows 代理的配置其他请参考官网。
创建代理
使用管理员登录 jenkins,打开 Manage-Jenkin s——>Nodes菜单
配置从节点
节点名称:节点的唯一标识
节点描述:描述信息(可填写操作系统平台、环境、cpu 核心数等)
Number of executors:执行数量,可以理解为此节点并行构建的最大数目
远程目录:用于存放节点的工作目录(workspacs、logs),最好用绝对路径如:D:/jenkins
标签:标签用来对多节点分组,标记之间用空格分隔.例如'refression java6'将会把一个节点标记上'regression'和'java6'.
举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,那么你可以配置所有的Windows系统节点都标记为'windows', 然后把Job也标记为'windows'.这样的话你的Job就不会运行在除了Windows节点以外的其它节点之上了.
用法:
1.尽可能多的使用此节点
2.仅使用与此节点匹配的表达式构建作业(一般为了管理选择此项)
启动方式:将代理连接控制器来启动代理
可用性:尽可能保证此代理在线
获取代理配置命令
测试代理节点连通性
注意:控制器和代理一定要在一个局域网,不然肯定不通呀
1.下载 agent.jar在需要配置代理的服务器上,打开 cmd 窗口,先粘贴第一条命令:(复制粘贴你自己的)
curl.exe -sO http://192.168.1.108.com:8080/jnlpJars/agent.jar
2.执行测试命令(复制粘贴你自己的)
java -jar agent.jar -jnlpUrl http://192.168.1.108:8080/computer/pub/jenkins-agent.jnlp -secret f88fa9e15b32665b8c71bbcee3676a612e8ea7fd871d6642157cd8a5708f0718 -workDir "
出现is not reachable on host错误,请查看解决方法:
D:\jenkins>java -jar agent.jar -jnlpUrl http://192.168.1.108:8080/computer/pub/jenkins-agent.jnlp -secret f88fa9e15b32665b8c71bbcee3676a612e8ea7fd871d6642157cd8a5708f0718 -workDir "D:/jenkins"
9月 30, 2023 11:03:13 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using D:\jenkins\remoting as a remoting work directory
9月 30, 2023 11:03:13 下午 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
信息: Both error and output logs will be printed to D:\jenkins\remoting
9月 30, 2023 11:03:13 下午 hudson.remoting.jnlp.Main createEngine
信息: Setting up agent: pub
9月 30, 2023 11:03:13 下午 hudson.remoting.Engine startEngine
信息: Using Remoting version: 3107.v665000b_51092
9月 30, 2023 11:03:13 下午 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
信息: Using D:\jenkins\remoting as a remoting work directory
9月 30, 2023 11:03:13 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Locating server among [http://192.168.1.108:8080]
9月 30, 2023 11:03:13 下午 org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
信息: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
9月 30, 2023 11:03:18 下午 org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver isPortVisible
警告: Connect timed out
9月 30, 2023 11:03:18 下午 hudson.remoting.jnlp.Main$CuiListener error
严重: http://192.168.1.108:8080/ provided port:49468 is not reachable on host jenkins.escopetech.com
java.io.IOException: http://192.168.1.108:8080/ provided port:49468 is not reachable on host http://192.168.1.108
at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:303)
at hudson.remoting.Engine.innerRun(Engine.java:755)
at hudson.remoting.Engine.run(Engine.java:543)