0
点赞
收藏
分享

微信扫一扫

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)

基于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中的一致)
第一个节点:

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_02

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_03

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_JNLP_04

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_基于Docker的Jenkins分布式构_05

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_JNLP_06


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状态

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_07

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_基于Docker的Jenkins分布式构_08

基于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添加节点一并保存私钥信息

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_09

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_10

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_11

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_基于Docker的Jenkins分布式构_12

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_13

高级设置指定端口为22022

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_JNLP_14

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_基于Docker的Jenkins分布式构_15

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_JNLP_16

使用docker命令启动该文件

docker-compose -f docker-compose-ssh-agent.yml up -d

去jenkins的master上查看节点状态

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_JNLP_17

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

9、基于Docker的Jenkins分布式构建环境(JNLP连接和SSH静态连接 Agent)_SSH_18

举报

相关推荐

0 条评论