基于Docker的Jenkins分布式构建环境(JNLP)
jenkins agent的dockerfile文件(JNLP)
[root@jenkins-agent 07-jenkins-agents]#cat docker-compose-inbound-agent.yml version: '3.6'
volumes:
agent01_data: {}
agent02_data: {}
networks:
jenkins_net:
driver: bridge
ipam:
config:
- subnet: 172.31.9.0/24
services:
agent01:
image: jenkins/inbound-agent:alpine-jdk11
hostname: agent01.magedu.com
user: root
environment:
TZ: Asia/Shanghai
JENKINS_URL: http://jenkins.magedu.com:8080
JENKINS_AGENT_NAME: agent01.magedu.com
JENKINS_AGENT_WORKDIR: /home/jenkins/agent
JENKINS_SECRET: a302b485b9e4f08b1f8998251656d143e9ecad6d705f00c36a8fb8d26b1ef7a3
# SECRET is automatically generated by the master when adding agent01.
volumes:
- agent01_data:/appdata/jenkins/
networks:
jenkins_net:
ipv4_address: 172.31.9.11
aliases:
- slave01
- agent01
#extra_hosts:
# - "jenkins.magedu.com:172.29.7.7" #使用域名对当前宿主机进行解析
#restart: always
agent02:
image: jenkins/inbound-agent:alpine-jdk11
hostname: agent02.magedu.com
user: root
environment:
TZ: Asia/Shanghai
JENKINS_URL: http://jenkins.magedu.com:8080
JENKINS_AGENT_NAME: agent02.magedu.com
JENKINS_AGENT_WORKDIR: /home/jenkins/agent
JENKINS_SECRET: 38f226a11906cb319dc3f41e8a6bd1a7dd1f2f234eaf24189aa5a6502d1c49d6
# SECRET is automatically generated by the master when adding agent02.
volumes:
- agent02_data:/appdata/jenkins/
networks:
jenkins_net:
ipv4_address: 172.31.9.12
aliases:
- slave02
- agent02
#extra_hosts:
# - "jenkins.magedu.com:172.29.7.7"
#restart: always
在jenkins的master上配置节点(创建的agent名称、远程目录要与dockerfile中的一致)
第一个节点:



第二个节点:复制第一个节点生成第二个节点


打开节点,把密钥复制下来,替换dockerfile里面的密钥

agrnt01和agent02都需要更换
vim docker-compose-inbound-agent.yml
JENKINS_SECRET: 322a1411c1758089607bbd10e5eb587004a2cc9dad33be69cae225f67f1c391b
JENKINS_SECRET: f4e139e7084f786b3e95b2cc43a2c85e4c66778f6d0d8b8232021c1d52f95e11
让当前主机对域名进行解析
vim /etc/hosts
10.0.0.101 jenkins.magedu.com
使用docker命令启动该文件
[root@jenkins-agent 07-jenkins-agents]#docker-compose -f ./docker-compose-inbound-agent.yml up -d
去jenkins的master上查看agent01、02状态

在流水线任务中选择docker运行的节点(两个agent会启动某一个)

基于Docker的Jenkins分布式构建环境(SSH)
jenkins agent的dockerfile文件(SSH)
[root@jenkins-agent 07-jenkins-agents]#cat docker-compose-ssh-agent.yml
version: '3.6'
volumes:
ssh_agent01_data: {}
ssh_agent02_data: {}
networks:
jenkins_net:
driver: bridge
ipam:
config:
- subnet: 172.31.9.0/24
services:
ssh-agent01:
image: jenkins/ssh-agent:jdk11
hostname: ssh-agent01.magedu.com
#user: jenkins
environment:
TZ: Asia/Shanghai
#JENKINS_AGENT_HOME: /home/jenkins
JENKINS_AGENT_SSH_PUBKEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6z4ELkY56/vIIhmCPNE2FolKlskP6OEsyGIfS3TVhHTpXOTjsc37C8BHo997rEIlyXGvPG36xQDd1dxsz2dz0Rs0e60iUsdT7JwQjLgW/6szX9W0EmNWiUz9od6Gt+onCC4jd9yK2zdDDc+E6ML5WihAGm7dmKU3l3FrBa1oYgDa6Jig/sL0Wl5+3gOJPzUrxX438FRkORVnDFEz37Da8RUf+8vcI/6eQ5loUDp0/qTPpDqhC98He6JPwr31Jenx8ULdrsPZH5Og2KYX801aVpw6DTiC+uZm9gyw1ysqSGCXgBkrh/IB9rdvl3szzWseLZg+Nj84j1d3LUN/oXj1N
# SSH PRIVATE KEY and PUBLIC KEY is generated by you.
networks:
jenkins_net:
ipv4_address: 172.31.9.21
aliases:
- ssh-slave01
- ssh-agent01
ports:
- "22022:22"
#restart: always
ssh-agent02:
image: jenkins/ssh-agent:jdk11
hostname: ssh-agent02.magedu.com
#user: jenkins
environment:
TZ: Asia/Shanghai
#JENKINS_AGENT_HOME: /home/jenkins
JENKINS_AGENT_SSH_PUBKEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6z4ELkY56/vIIhmCPNE2FolKlskP6OEsyGIfS3TVhHTpXOTjsc37C8BHo997rEIlyXGvPG36xQDd1dxsz2dz0Rs0e60iUsdT7JwQjLgW/6szX9W0EmNWiUz9od6Gt+onCC4jd9yK2zdDDc+E6ML5WihAGm7dmKU3l3FrBa1oYgDa6Jig/sL0Wl5+3gOJPzUrxX438FRkORVnDFEz37Da8RUf+8vcI/6eQ5loUDp0/qTPpDqhC98He6JPwr31Jenx8ULdrsPZH5Og2KYX801aVpw6DTiC+uZm9gyw1ysqSGCXgBkrh/IB9rdvl3szzWseLZg+Nj84j1d3LUN/oXj1N
# SSH PRIVATE KEY and PUBLIC KEY is generated by you.
networks:
jenkins_net:
ipv4_address: 172.31.9.22
aliases:
- ssh-slave02
- ssh-agent02
ports:
- "22122:22"
#restart: always
使用命令生成公钥私钥保存在当前目录下
[root@jenkins-agent ~]#ssh-keygen -t rsa -b 2048 -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ./jenkins-ssh-agent-rsa
Your identification has been saved in ./jenkins-ssh-agent-rsa
Your public key has been saved in ./jenkins-ssh-agent-rsa.pub
The key fingerprint is:
SHA256:L6saHs+ITqqF0ZNnDGAl/Kgf1UKtRc0hkvJ8JdxIpW8 root@jenkins-agent
The key's randomart image is:
+---[RSA 2048]----+
|oo...*+*o. |
|.oo o.*o= |
| += +.o |
| o =* o. |
|o +.+o E |
|.o.+ . . |
|..o.o . . |
| +.o * o |
|+.o +.+.. |
+----[SHA256]-----+
[root@jenkins-agent ~]#ls
agent.jar jenkins-ssh-agent-rsa packages
install_docker.sh jenkins-ssh-agent-rsa.pub snap
jenkins_2.380_all.deb learning-jenkins-cicd
公钥:jenkins-ssh-agent-rsa.pub
私钥:jenkins-ssh-agent-rsa
把公钥内容复制下来粘贴到dockerfile的定义密钥处
vim docker-compose-ssh-agent.yml
JENKINS_AGENT_SSH_PUBKEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfwNvqJPVMQMIFReq28yAVKsB7TLcZZBdUITP8iGKpC8jan25++D6sVTRxRiG5zeOXX2e3bKiOuE2gVVlaSfXGeNUz8pqeqYNW00vzwROmO+JI/+Yg+ORUXYdyvHVScSXiGiQKS38U/YmXXu2j96ZVhX4v6u2kbJuuHAMsZv058+37sJIkrBjIbM7zirxjxmHMI48kP0PrfeZKbmDDUUm8BcuLgIHGVmrq4bq1u1YVZLsBjXKTIiudhOEtmk4cFnsrdEv2Ew2F7d61iCOk38Zf2J3SiajKY7Moxv2wjv4LKtnL96EoX5e35qdyLs/g27Ae2y3rsDSDbzv17Mtht4bR
在jenkins的master添加节点一并保存私钥信息


主机指向agent的ip,启动方式为Launch agents via SSH,并添加credentials



高级设置指定端口为22022

添加节点二(复制节点一,只需要更改端口)


使用docker命令启动该文件
docker-compose -f docker-compose-ssh-agent.yml up -d
去jenkins的master上查看节点状态

在流水线任务中选择docker运行的节点(选择docker-ssh)
