Jenkins如何在Ubuntu上进行分布式构建
导读:在 Ubuntu 上搭建 Jenkins 分布式构建 一 架构与准备 架构说明:使用 Master–Agent(原 Slave) 模式,Master 负责任务调度与界面展示,Agent 负责实际构建,便于横向扩容与资源隔离。 版本建议:安...
在 Ubuntu 上搭建 Jenkins 分布式构建
一 架构与准备
- 架构说明:使用 Master–Agent(原 Slave) 模式,Master 负责任务调度与界面展示,Agent 负责实际构建,便于横向扩容与资源隔离。
- 版本建议:安装 OpenJDK 11(也可使用 OpenJDK 8,但需与 Master 的 Java 版本兼容)。
- 基础环境:所有节点(Master 与 Agent)均安装 OpenJDK 11 与 Jenkins(如需在 Agent 上运行 Jenkins 服务也可安装,但仅运行 Agent 时可只装 JRE/Java)。
- 网络与端口:确保 Master 8080 端口可被 Agent 访问;如使用 JNLP 方式,需在 Master 开启 JNLP 代理端口 并放通防火墙。
- 目录与权限:在 Agent 上预先创建 远程工作目录(如 /var/lib/jenkins),并确保运行 Jenkins Agent 的用户对该目录具备读写权限。
二 安装与基础配置
- 安装 Java(Master 与所有 Agent)
- 更新索引并安装:sudo apt-get update & & sudo apt-get install -y openjdk-11-jdk
- 安装 Jenkins(Master)
- 添加仓库并安装:
- wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
- sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
- sudo apt-get update & & sudo apt-get install -y jenkins
- 启动并设置开机自启:sudo systemctl start jenkins & & sudo systemctl enable jenkins
- 添加仓库并安装:
- 基础安全与插件(Master)
- 在 Manage Jenkins → Configure Global Security 启用安全(如登录、授权策略)。
- 在 Manage Jenkins → Manage Plugins 安装常用插件:SSH Slaves、Pipeline、Git、Docker(按需)。
三 添加与管理 Agent 节点
- 在 Master 新增节点
- 路径:Manage Jenkins → Manage Nodes and Clouds → New Node,输入节点名称,选择 Permanent Agent。
- 关键配置:
- Remote root directory:如 /var/lib/jenkins
- Labels:如 ubuntu-22.04、docker、gpu(用于任务按标签调度)
- Usage:如 Use this node as much as possible
- Launch method:选择 Launch agent via Java Web Start(JNLP)或 Launch agents via SSH
- 通过 JNLP 连接(Agent 上执行)
- 在新增节点页面下载 agent.jar,拷贝至 Agent(如 /var/lib/jenkins)。
- 运行命令(示例):
- java -jar agent.jar -jnlpUrl http://:8080/computer//jenkins-agent.jnlp -secret -workDir /var/lib/jenkins
- 连接成功后,节点状态显示为 Online。
- 通过 SSH 连接(推荐免密)
- 在 Master 上配置 SSH 凭据(用户名/私钥),在节点配置的 Launch method 选择 Launch agents via SSH,填写 Host、Credentials 等并保存,系统会自动连接。
- 验证与常用操作
- 在 Manage Nodes 查看节点 在线/离线、负载、执行器数量;必要时调整 执行器(Executors) 与 标签 以匹配 CPU/内存与用途。
四 运行与并行构建
- 按节点标签运行
- 在任务配置中勾选 Restrict where this project can be run,填写目标 Label(如 ubuntu-22.04),即可将任务固定到指定 Agent。
- Pipeline 按标签调度
- 示例:
- pipeline { agent { label ‘docker’ } stages { stage(‘Build’) { steps { sh ‘echo Building…’ } } } }
- 示例:
- 多任务并行
- 在 Pipeline 中使用 parallel 并行多个阶段:
- pipeline { agent any stages { stage(‘Parallel’) { parallel { stage(‘Task1’) { steps { echo ‘Task1’ } } stage(‘Task2’) { steps { echo ‘Task2’ } } } } }
- 在 Pipeline 中使用 parallel 并行多个阶段:
- 按节点选择构建(可选)
- 安装 Node and Label parameter 插件,为任务增加节点选择参数,构建时动态指定 Agent。
五 常见问题与优化
- Java 不匹配:Master 与 Agent 的 Java 主版本 建议一致(如均为 OpenJDK 11),避免因字节码/工具链差异导致构建失败。
- 连接失败排查:确认 8080 与 JNLP 端口 已放通;JNLP 方式核对 jnlpUrl 与 secret;SSH 方式核对 SSH 凭据 与 主机连通性。
- 权限与目录:确保 远程工作目录(如 /var/lib/jenkins)存在且 Jenkins Agent 运行用户 具备读写权限。
- 资源与并发:根据 CPU/内存 合理设置 执行器数量,避免单机过载;通过 标签 将 CPU 密集/IO 密集/需要 Docker 或 GPU 的任务拆分到不同 Agent。
- 高可用与扩展:如需 Master 高可用,可结合 Keepalived 实现 VIP 漂移;横向扩展时持续增加 Agent 并按 标签 进行任务编排。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何在Ubuntu上进行分布式构建
本文地址: https://pptw.com/jishu/751364.html
