基于Docker的Jenkins分布式构建环境可以同时使用JNLP连接和SSH静态连接Agent来实现构建任务的分发和执行。Jenkins是一个流行的持续集成和持续交付工具,而Docker提供了一种方便且可移植的方式来构建和管理分布式构建环境。以下是一个基本教程来配置基于Docker的Jenkins分布式构建环境:

蓝易云服务器 - 基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接Agent)_Web

  1. 安装Docker和Docker Compose:
    首先,确保您的系统上已经安装了Docker和Docker Compose。如果您还没有安装它们,请按照您系统的适用方法进行安装。
  2. 创建Docker Compose文件:
    在您的项目目录中创建一个名为 docker-compose.yml的文件,并将以下内容添加到文件中:
version: '3'

services:
  jenkins-master:
    image: jenkins/jenkins:lts
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_data:/var/jenkins_home
    restart: always
  jenkins-agent:
    image: jenkins/ssh-agent
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      AGENT_WORKDIR: /home/jenkins/agent
      SSH_AGENT: "true"
    restart: always

volumes:
  jenkins_data:
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

在上面的配置中,我们使用了官方提供的Jenkins LTS版本和SSH Agent的Docker镜像。我们将Jenkins的Web界面端口映射到主机的8080端口,并将Jenkins的JNLP Agent端口映射到主机的50000端口。我们还将Jenkins的数据目录挂载到Docker卷 jenkins_data中,以保持Jenkins的数据持久性。另外,我们使用了SSH Agent镜像,并将Docker守护进程的UNIX套接字挂载到容器中,以便在Jenkins Agent容器中能够运行Docker命令。

  1. 启动Jenkins环境:
    运行以下命令启动Jenkins环境:
docker-compose up -d
  • 1.
  1. 配置Jenkins主节点:
    打开浏览器,访问Jenkins Web界面:http://your_server_ip:8080,按照向导完成Jenkins的初始化配置。
  2. 添加静态SSH Agent节点:
    在Jenkins Web界面中,导航到"Manage Jenkins" > "Manage Nodes and Clouds" > "New Node",创建一个新的节点并选择"Permanent Agent"类型。在节点配置中,选择"Launch agent via SSH"并填写SSH连接的相关信息。
  3. 添加JNLP Agent节点:
    在Jenkins Web界面中,导航到"Manage Jenkins" > "Manage Nodes and Clouds" > "New Node",创建一个新的节点并选择"Dumb Slave"类型。在节点配置中,选择"Launch agent via Java Web Start",Jenkins会生成一个JNLP文件,您可以使用该文件在JNLP Agent上启动Agent进程。
  4. 启动JNLP Agent节点:
    在JNLP Agent上运行以下命令,启动Agent进程:
java -jar agent.jar -jnlpUrl http://jenkins_server_ip:8080/computer/agent_name/slave-agent.jnlp -secret your_secret
  • 1.

其中,jenkins_server_ip是Jenkins服务器的IP地址,agent_name是JNLP Agent节点的名称,your_secret是节点连接的密钥。

现在,您已经成功配置了基于Docker的Jenkins分布式构建环境,同时使用了JNLP连接和SSH静态连接Agent。您可以根据需要添加更多的Agent节点,并通过Jenkins管理构建任务的分发和执行。Docker的灵活性使得构建环境的部署和扩展变得非常简单和便捷。