Jenkins在Linux怎样实现分布式构建
导读:一、环境准备 节点规划:至少准备1台Master节点(用于管理任务)和1台及以上Slave节点(用于执行任务),建议使用CentOS/RHEL或Ubuntu等Linux发行版。 网络要求:所有节点处于同一局域网或可通过公网互通,确保Mas...
一、环境准备
- 节点规划:至少准备1台Master节点(用于管理任务)和1台及以上Slave节点(用于执行任务),建议使用CentOS/RHEL或Ubuntu等Linux发行版。
- 网络要求:所有节点处于同一局域网或可通过公网互通,确保Master能访问Slave的SSH端口(默认22),Slave能访问Master的Jenkins Web端口(默认8080)及JNLP端口(默认50000)。
- 基础软件:所有节点安装Java环境(推荐OpenJDK 11+,Jenkins依赖Java运行),Master节点安装Jenkins(版本≥2.300),Slave节点无需安装Jenkins(仅需JRE)。
二、安装与配置Jenkins Master
-
安装Jenkins
以CentOS为例,通过官方YUM仓库安装:sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key sudo yum install jenkins -y sudo systemctl start jenkins & & sudo systemctl enable jenkinsUbuntu用户可通过APT仓库安装(替换对应命令即可)。
-
配置Master节点
- 访问
http://< Master_IP> :8080,使用初始管理员账号登录。 - 进入Manage Jenkins → Manage Plugins,安装必要插件(如
SSH Slaves(用于SSH连接)、Docker Pipeline(可选,容器化构建)、Kubernetes Continuous Deploy(可选,K8s集群管理))。 - 进入Manage Jenkins → Configure Global Security,开启TCP port for JNLP agents(默认50000),确保Slave能通过该端口连接。
- 访问
三、添加与配置Slave节点
方式1:SSH方式(推荐,安全便捷)
-
Slave节点准备
- 安装Java环境:
sudo yum install -y java-11-openjdk-devel # CentOS sudo apt-get install -y openjdk-11-jdk # Ubuntu - 确保Slave节点开放SSH端口(
sudo systemctl start sshd & & sudo systemctl enable sshd)。
- 安装Java环境:
-
Master添加Slave节点
- 进入Manage Jenkins → Manage Nodes and Clouds → New Node。
- 输入节点名称(如
slave01),选择Permanent Agent,点击“OK”。 - 配置节点参数:
- Remote root directory:设置Slave的工作目录(如
/home/jenkins/agent,需提前创建且具备写入权限)。 - Number of executors:设置并发执行任务数(如2,根据Slave资源调整)。
- Launch method:选择Launch agents via SSH。
- Host:填写Slave节点的IP或域名。
- Credentials:添加SSH私钥(需提前在Slave节点生成
~/.ssh/id_rsa.pub,并在Master节点通过“Credentials”添加该私钥)。
- Remote root directory:设置Slave的工作目录(如
- 点击“Save”。
-
Slave节点启动Agent
- 在Master节点的Slave配置页面,复制Agent Command(如
java -jar /tmp/agent.jar -jnlpUrl http://master_ip:8080/computer/slave01/slave-agent.jnlp -secret your_secret -workDir "/home/jenkins/agent")。 - 登录Slave节点,执行该命令,若看到“Agent successfully connected and online”,则说明连接成功。
- 在Master节点的Slave配置页面,复制Agent Command(如
方式2:JNLP方式(传统,适用于无SSH访问场景)
-
Slave节点获取JNLP文件
- 登录Master节点的Jenkins Web界面,进入Manage Jenkins → Manage Nodes and Clouds,选择目标Slave节点,点击“Launch agent”。
- 浏览器会下载
slave-agent.jnlp文件。
-
Slave节点启动Agent
- 在Slave节点执行以下命令(替换
slave-agent.jnlp路径和workDir):java -jar /path/to/slave-agent.jnlp -workDir "/home/jenkins/agent" - 若成功,Slave节点会显示“Online”状态。
- 在Slave节点执行以下命令(替换
四、配置分布式构建任务
-
创建任务
进入Jenkins主页,点击“New Item”,输入任务名称(如distributed-build),选择“Freestyle project”或“Pipeline”,点击“OK”。 -
关联Slave节点
- Freestyle项目:进入Restrict where this project can be run,勾选该选项,在输入框中填写Slave节点的标签(如
linux-agent,需在Slave配置时设置)或节点名称(如slave01)。 - Pipeline项目:在
Jenkinsfile中指定节点标签,示例如下:pipeline { agent { node { label 'linux-agent' // 与Slave节点标签一致 } } stages { stage('Build') { steps { sh 'echo "Building on $(hostname)"' sh 'mvn clean package' // 示例:Maven构建 } } } } - 配置完成后,点击“Save”。
- Freestyle项目:进入Restrict where this project can be run,勾选该选项,在输入框中填写Slave节点的标签(如
五、验证与监控
-
触发构建
在任务页面点击“Build Now”,观察任务是否被分配到指定的Slave节点执行。 -
监控进度
- 进入Manage Jenkins → Manage Nodes and Clouds,查看Slave节点的状态(Online/Offline)及执行器占用情况。
- 在任务页面点击“Console Output”,查看构建日志,确认任务在Slave节点执行(日志中会显示Slave的主机名)。
六、注意事项
- 资源分配:确保Slave节点有足够的CPU、内存、磁盘空间(建议每个执行器分配至少2GB内存)。
- 安全配置:SSH连接需使用密钥认证(禁用密码认证),关闭Master节点的远程访问端口(如8080)或通过防火墙限制访问IP。
- 高可用性:可通过多个Slave节点实现负载均衡,或使用Kubernetes插件将Slave节点部署为Pod(动态扩缩容)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Linux怎样实现分布式构建
本文地址: https://pptw.com/jishu/719509.html
