温馨提示×

如何在Debian设Jenkins代理

小樊
37
2026-09-14 05:43:09
栏目: 智能运维

在 Debian 上配置 Jenkins 代理(Agent / Node) 通常有两种常见方式:

  1. SSH 方式(推荐,简单稳定)
  2. JNLP / WebSocket 方式(通过 Java 启动代理)

下面分别说明。


一、准备工作(代理机)

在 Debian 代理机上执行:

sudo apt update
sudo apt install -y openjdk-17-jdk

确认 Java 可用:

java -version

创建专用用户(推荐):

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

二、方式一:SSH 代理(最常用)

1. Jenkins 主控端配置

  1. 打开 Jenkins
    Manage Jenkins → Nodes → New Node
  2. 填写:
    • Node name:debian-agent
    • Type:Permanent Agent
  3. 配置:
    • Remote root directory:/home/jenkins
    • Labels:debian
    • Launch method:
      Launch agents via SSH
  4. Host:
    • Host:代理机 IP
    • Credentials:jenkins 用户账号或 SSH Key
    • Host Key Verification:Non verifying

保存后 Jenkins 会自动连接。


2. 代理机无需额外操作

只要:

  • SSH 可登录
  • Java 已安装
  • 目录可写

三、方式二:JNLP / WebSocket 代理

1. Jenkins 主控端

  1. Manage Jenkins → Nodes → New Node
  2. Launch method:
    • Launch agent by connecting it to the master
  3. 保存后点击该节点
    会看到类似命令:
java -jar agent.jar -url http://jenkins.example.com/ \
secret=xxxxxx -name debian-agent

2. 代理机操作

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

运行:

java -jar agent.jar \
-url http://jenkins.example.com/ \
secret=xxxxxx \
-name debian-agent

建议用 systemd 管理(见下)。


四、使用 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 \
-url http://jenkins.example.com/ \
-secret xxxxxx \
-name debian-agent

Restart=always

[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable --now jenkins-agent

五、验证

在 Jenkins:

  • Nodes 页面显示 Agent 在线
  • 新建 Pipeline 测试:
pipeline {
    agent { label 'debian' }
    stages {
        stage('Test') {
            steps {
                sh 'uname -a'
            }
        }
    }
}

如果你告诉我:

  • Jenkins 版本
  • 是否用 Docker
  • 内网还是公网

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

0