Jenkins Agent Linux 系统服务安装指南
本文档详细介绍如何在 Linux 系统上将 Jenkins Agent 配置为 systemd 系统服务,实现开机自动启动。涵盖 Java 17 安装、服务配置、故障排查等完整流程。
1. 前置条件
- Linux 系统(支持 systemd)
- sudo 权限
- 网络连接(用于下载 Java)
- Jenkins 服务端的 URL 和 Secret
2. 安装步骤
2.1 步骤 1: 安装 Java 17
Jenkins Agent 需要 Java 17 或更高版本。检查系统中的 Java 版本:
java -version
如果系统没有 Java 或版本低于 17,需要安装 Java 17。
方法 1: 从 Adoptium 下载安装(推荐)
# 创建临时目录
cd ~
mkdir -p java-install
cd java-install
# 下载 OpenJDK 17
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.10%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.10_7.tar.gz
# 解压
tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.10_7.tar.gz
# 安装到系统目录
sudo mv jdk-17.0.10+7 /usr/local/jdk-17
# 验证安装
/usr/local/jdk-17/bin/java -version
2.2 步骤 2: 准备 Agent 文件
- 创建工作目录
mkdir -p /home/xhm/jenkins
cd /home/xhm/jenkins
- 下载 agent.jar
从 Jenkins 服务端下载 agent.jar 文件,或使用已有的 agent.jar,确保文件位于:
/home/xhm/jenkins/agent.jar
2.3 步骤 3: 创建服务文件
创建 systemd 服务文件 /home/xhm/jenkins/jenkins-agent.service:
sudo nano /home/xhm/jenkins/jenkins-agent.service
服务文件内容如下(请根据实际情况修改相关参数):
[Unit]
Description=Jenkins Agent Service
After=network.target
Wants=network.target
[Service]
Type=simple
User=xhm
Group=xhm
WorkingDirectory=/home/xhm/jenkins
ExecStart=/usr/local/jdk-17/bin/java -jar /home/xhm/jenkins/agent.jar -url http://192.168.20.35:11080/ -secret 9e96e61eba4156e1076d77375aaefde46f99721cec6dcdsafascddaa8091d721b05 -name "linux-agent" -webSocket -workDir "/home/xhm/jenkins"
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=jenkins-agent
# Environment variables (if needed)
Environment=JAVA_HOME=/usr/local/jdk-17
Environment=PATH=/usr/local/jdk-17/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Security settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/xhm/jenkins
[Install]
WantedBy=multi-user.target
配置说明
服务文件参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
Type | 服务类型 | simple (简单类型) |
User/Group | 运行用户/组 | xhm/xhm |
WorkingDirectory | 工作目录 | /home/xhm/jenkins |
ExecStart | 启动命令 | Java 启动 agent.jar 的命令 |
Restart | 重启策略 | always (总是重启) |
RestartSec | 重启延迟 | 10 (10 秒) |
Agent 参数说明
| 参数 | 说明 | 必需 |
|---|---|---|
-url | Jenkins 服务端 URL | 是 |
-secret | Agent 连接密钥 | 是 |
-name | Agent 名称 | 否 |
-webSocket | 使用 WebSocket 连接 | 否 |
-workDir | Agent 工作目录 | 否 |
安全设置
服务文件中包含以下安全设置:
NoNewPrivileges=true: 禁止获取新权限PrivateTmp=true: 使用私有临时目录ProtectSystem=strict: 保护系统目录ProtectHome=read-only: 保护家目录为只读ReadWritePaths: 指定可写路径
2.4 步骤 4: 安装并启用服务
- 复制服务文件到 systemd 目录
sudo cp /home/xhm/jenkins/jenkins-agent.service /etc/systemd/system/
- 重新加载 systemd 配置
sudo systemctl daemon-reload
- 启用开机自启动
sudo systemctl enable jenkins-agent.service
- 启动服务
sudo systemctl start jenkins-agent.service
2.5 步骤 5: 验证服务
- 检查服务状态
sudo systemctl status jenkins-agent
正常运行的输出应该显示:
● jenkins-agent.service - Jenkins Agent Service
Loaded: loaded (/etc/systemd/system/jenkins-agent.service; enabled)
Active: active (running) since ...
- 查看服务日志
# 查看实时日志
sudo journalctl -u jenkins-agent -f
# 查看最近50条日志
sudo journalctl -u jenkins-agent -n 50
# 查看今天的日志
sudo journalctl -u jenkins-agent --since today
3. 服务管理
3.1 常用命令
# 启动服务
sudo systemctl start jenkins-agent
# 停止服务
sudo systemctl stop jenkins-agent
# 重启服务
sudo systemctl restart jenkins-agent
# 查看服务状态
sudo systemctl status jenkins-agent
# 查看服务日志
sudo journalctl -u jenkins-agent -f
# 启用开机自启动
sudo systemctl enable jenkins-agent
# 禁用开机自启动
sudo systemctl disable jenkins-agent
# 检查服务是否开机自启
sudo systemctl is-enabled jenkins-agent
3.2 服务自动重启
服务配置中已设置 Restart=always,当服务异常退出时会在 10 秒后自动重启。
4. 故障排查
4.1 问题 1: 服务无法启动
症状: systemctl status 显示 failed 或 inactive (dead)
排查步骤:
-
查看详细日志:
sudo journalctl -u jenkins-agent -n 100 --no-pager -
检查 Java 路径是否正确:
ls -la /usr/local/jdk-17/bin/java -
检查 agent.jar 是否存在:
ls -la /home/xhm/jenkins/agent.jar -
检查工作目录权限:
ls -ld /home/xhm/jenkins
4.2 问题 2: Java 版本不匹配
症状: 日志中出现 UnsupportedClassVersionError
错误示例:
java.lang.UnsupportedClassVersionError: class file version 61.0 ...
this version of the Java Runtime only recognizes class file versions up to 55.0
解决方案:
class file version 61.0表示需要 Java 1755.0表示当前 Java 版本是 11- 需要安装 Java 17 或更高版本(参考步骤 1)
4.3 问题 3: 无法连接到 Jenkins
症状: 日志中显示连接失败
排查步骤:
-
检查网络连接:
ping 192.168.20.35curl -I http://192.168.20.35:18080/ -
验证 URL 和 Secret 是否正确
-
检查防火墙设置:
sudo ufw status -
查看详细错误信息:
sudo journalctl -u jenkins-agent -f
4.4 问题 4: 权限问题
症状: 日志中显示 Permission denied
解决方案:
-
检查文件所有权:
sudo chown -R xhm:xhm /home/xhm/jenkins -
检查文件权限:
chmod 644 /home/xhm/jenkins/agent.jar
4.5 问题 5: 服务频繁重启
症状: 服务状态显示 activating (auto-restart)
排查步骤:
- 查看详细错误日志
- 检查 Java 路径和 agent.jar 路径是否正确
- 检查工作目录是否可写
- 检查 Jenkins 服务端是否可访问
5. 总结
完成以上步骤后,Jenkins Agent 已配置为系统服务,具备以下特性:
✅ 开机自动启动 ✅ 服务异常时自动重启 ✅ 日志记录到 systemd journal ✅ 安全配置限制权限 ✅ 易于管理和监控
如遇到问题,请参考故障排查章节或查看详细日志。