温馨提示×

Jenkins代理Debian如何配

小樊
35
2026-10-05 01:00:01
栏目: 智能运维

下面给你一套**在 Debian 上配置 Jenkins Agent(节点)**的常见做法,分为 SSH 方式(最常用) 和 JNLP/Web 方式。


一、准备工作(Agent 机器,Debian)

1. 安装 Java(必须)

Jenkins Agent 需要 JVM:

sudo apt update
sudo apt install -y openjdk-17-jdk
# 或 11
# openjdk-11-jdk

验证:

java -version

2. 创建 Jenkins 用户(推荐)

sudo useradd -m -s /bin/bash jenkins
sudo passwd jenkins

二、方式一:SSH Agent(推荐)

1. 在 Jenkins Master 上

  • Manage Jenkins → Nodes → New Node
  • 类型:Permanent Agent
  • 远程目录(Remote root directory):
    /home/jenkins/agent
    
  • 启动方式:
    Launch agents via SSH
    
  • Host:Agent IP
  • Credentials:
    • 用户名:jenkins
    • 私钥(推荐)

2. 配置 SSH 免密(Master → Agent)

在 Jenkins Master 上:

ssh-keygen
ssh-copy-id jenkins@agent-ip

测试:

ssh jenkins@agent-ip

3. Agent 目录权限

sudo mkdir -p /home/jenkins/agent
sudo chown -R jenkins:jenkins /home/jenkins/agent

4. 保存并启动节点

  • 点击节点
  • Launch agent
  • 状态变为 Online 即成功

三、方式二:JNLP Agent(Web 启动)

1. Jenkins Master 创建节点

  • Launch method:
    Launch agent by connecting it to the master
    

保存后会得到类似:

java -jar agent.jar -jnlpUrl http://jenkins-url/computer/agent-name/slave-agent.jnlp -secret xxxxxx

2. Agent 机器执行

mkdir -p /home/jenkins/agent
cd /home/jenkins/agent
wget http://jenkins-url/jnlpJars/agent.jar

运行:

java -jar agent.jar \
  -jnlpUrl http://jenkins-url/computer/agent-name/slave-agent.jnlp \
  -secret your-secret

3. 用 systemd 管理(推荐)

sudo nano /etc/systemd/system/jenkins-agent.service
[Unit]
Description=Jenkins Agent
After=network.target

[Service]
User=jenkins
WorkingDirectory=/home/jenkins/agent
ExecStart=/usr/bin/java -jar /home/jenkins/agent/agent.jar \
  -jnlpUrl http://jenkins-url/computer/agent-name/slave-agent.jnlp \
  -secret your-secret
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now jenkins-agent

四、常见问题

1. Agent 不在线

  • 防火墙:22(SSH)或 8080
  • Java 版本不匹配
  • 目录权限错误

2. 磁盘或内存不足

df -h
free -h

3. 多 Agent 标签

在节点配置中加:

Labels: debian docker build

Pipeline 中:

agent { label 'debian' }

如果你愿意,可以告诉我:

  • Jenkins 版本
  • Agent 用途(构建 / 部署 / Docker)
  • 是否用 Docker

我可以给你更精确的配置示例。

0 踩