Linux下Jenkins怎样实现分布式构建
导读:Linux下Jenkins分布式构建实操指南 一 架构与关键概念 采用 Master–Agent(旧称 Slave) 架构:Master 负责调度、界面与记录,Agent 在远程机器上执行构建;构建结果和产物最终回到 Master。 基本...
Linux下Jenkins分布式构建实操指南
一 架构与关键概念
- 采用 Master–Agent(旧称 Slave) 架构:Master 负责调度、界面与记录,Agent 在远程机器上执行构建;构建结果和产物最终回到 Master。
- 基本要素:
- 节点 Node:一台可运行任务的机器(Master 或 Agent)。
- 执行器 Executor:节点上真正执行构建的线程/进程,一个节点可配置多个执行器。
- 标签 Label:对节点按环境或能力分组(如 linux、jdk11、docker),用于精准投递任务。
- 典型场景:跨 操作系统(如在 Linux 编译、在 Windows 跑 IE 测试)、横向扩容 应对高峰、将 重型任务 隔离到专用机器。
二 前置准备
- 在所有节点安装 Java(推荐 OpenJDK 11):
sudo apt-get update & & sudo apt-get install -y openjdk-11-jdk。 - 确保 Master 可被 Agent 访问(网络、防火墙、安全组放行),并准备好用于连接的账号与凭据。
- 规划节点 标签 与 执行器数量(依据 CPU/内存与磁盘 I/O 评估)。
三 添加 Linux 从节点
- 在 Master 管理界面:Manage Jenkins → Manage Nodes and Clouds → New Node,类型选 Permanent Agent,填写:
- Name:如 linux-build-01。
- Remote root directory:如 /var/jenkins。
- Labels:如 linux jdk11 maven。
- Usage:
- Use this node as much as possible(尽量使用);
- Only build jobs with label expression matching this node(仅匹配标签的任务使用)。
- Launch method:
- Launch agent via SSH(推荐,需在 Master 安装 SSH Slaves 插件):填写 Host、Credentials,按需设置 JavaPath。
- Launch agent by connecting it to the master(JNLP/Java Web Start):
- 在 Master 节点页面下载 agent.jar;
- 将 agent.jar 传到 Agent 的 Remote root directory;
- 在 Agent 上执行连接命令(示例):
java -jar agent.jar -jnlpUrl http://< MASTER_IP> :8080/computer/< AGENT_NAME> /slave-agent.jnlp -secret -workDir “/var/jenkins”
- 节点上线后,可在 Master 的节点列表查看 在线状态、负载、日志。
四 任务分发与 Pipeline 示例
- 按标签固定节点运行:在 Freestyle 项目的 Restrict where this project can be run 填入标签(如 linux)。
- Pipeline 按标签调度:
pipeline { agent { label ‘linux’ } stages { stage(‘Build’) { steps { sh ‘java -version’ sh ‘mvn -B -DskipTests clean package’ } } } } - 并发与隔离建议:为 CPU 核数相近 的节点配置合理 Executors,将 重型/有状态 任务隔离到专用节点,避免相互影响。
五 安全与运维最佳实践
- 加固 Master→Agent 通道:
- 使用 SSH 密钥 或 JNLP 固定端口(在 Manage Jenkins → Global Security → TCP port for JNLP 选择固定端口),便于防火墙与自动化;
- 避免使用 root 运行 Agent,采用最小权限账号与目录隔离。
- 工具链与环境:
- 在 Manage Jenkins → Global Tool Configuration 统一配置 JDK、Git、Maven、Docker 等工具路径;
- 在节点 Tool Locations 覆盖工具目录,使 跨平台/跨节点 Job 配置一致;
- 保持 Master 轻量,尽量不在 Master 上执行构建。
- 弹性伸缩与容器化:
- 使用 Docker 运行临时 Agent,快速扩容;
- 结合 Kubernetes 插件实现按需拉起 Pod Agent,适合高峰与弹性负载。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下Jenkins怎样实现分布式构建
本文地址: https://pptw.com/jishu/748438.html
