jenkins主从节点安装及pipeline构建

一、背景

通过Jenkins主节点配置的pipeline下发给从节点执行,从而兼容容器化执行

二、安装主节点

docker-compose.yml

  jenkins:
    user: root
    restart: always
    image: jenkinsci/blueocean
    container_name: jenkins
    # network_mode: host
    ports:
      - "8081:8080"
      - "50000:50000"
    environment:
      TZ: Asia/Shanghai
      VERSION: 4
    volumes:
      - /var/docker/jenkins/jenkins_home:/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker:/root/.docker
      - /etc/localtime:/etc/localtime

直接docker-compose up -d启动即可
在这里插入图片描述
默认装完是2.346.3版本,可以升级到2.4+版本,直接点击首页提示升级即可

三、安装相关依赖

jenkins主从节点安装及pipeline构建_第1张图片
相关依赖插件:
Docker plugin
Docker Commons Plugin
Docker API Plugin
Docker Pipeline
Permissive Script Security
Build User Vars
Workspace Cleanup

以上均安装后重启jenkins,如果提示:
jenkins主从节点安装及pipeline构建_第2张图片
如果更新过程中,网络不通,可以切换更新源:
Jenkins的update-center,URL为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
jenkins主从节点安装及pipeline构建_第3张图片
上面安装完成后,可以简单测试一下主节点服务是否正常,正常服务如下:

ubuntu2204@ubuntu2204-virtual-machine:/var/docker/jenkins$ curl 127.0.0.1:8081
<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2F'/><script>window.location.replace('/login?from=%2F');</script></head><body style='background-color:white; color:white;'>


Authentication required
<!--
-->

</body></html>  
ubuntu2204@ubuntu2204-virtual-machine:~$ curl 127.0.0.1:50000
Jenkins-Agent-Protocols: JNLP4-connect, Ping
Jenkins-Version: 2.401.1
Jenkins-Session: 7929d409
Client: 172.18.0.1
Server: 172.18.0.3
Remoting-Minimum-Version: 4.7

从节点搭建

新建节点并保存
jenkins主从节点安装及pipeline构建_第4张图片
保存后,就能得到一串密钥
jenkins主从节点安装及pipeline构建_第5张图片
从节点agent的docker-compose.yml文件

  jenkins-agent:
    image: jenkins/inbound-agent:alpine
    container_name: jenkins-agent
    restart: always
    network_mode: host
    user: root
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock  # 关键,使得 agent 能访问 docker
     - /var/docker/jenkins/jenkins:/var/jenkins  # 关键,对应于注册时指定的“远程工作目录”,必须挂载到宿主机上,否则会因为指令传参问题卡死任务
     - /var/docker/jenkins/startup-agent.sh:/var/startup.sh  # 因为需要事先安装 Docker Client 等,在启动脚本处注入部分操作
    command: /var/startup.sh  # 用这个挂载进去的脚本启动

确保/var/docker/jenkins目录存在,没有则创建。

/var/docker/jenkins/startup-agent.sh对应的脚本内容为:

!/usr/bin/env bash
 
# alpine install packages
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
apk add docker-cli tini
 
tini -- /usr/local/bin/jenkins-agent -url http://127.0.0.1:8081 7948f42bc###c1470d802cc02 test

docker-compose up -d后,可以看到
在这里插入图片描述
等一会后,就能看到从节点已连上:
jenkins主从节点安装及pipeline构建_第6张图片

这里选用的连接方式如下:
在这里插入图片描述
意思是从节点主动连接主节点,默认端口为50000,所以只要确保主节点50000端口放开即可使得从节点连接上。

pipeline测试

new item:选中pipeline类型后点击ok
jenkins主从节点安装及pipeline构建_第7张图片
pipeline的script输入下文案例并保存
jenkins主从节点安装及pipeline构建_第8张图片

pipeline {
    agent {
        docker { image 'busybox:latest' }
    }
    stages {
        stage('All') {
            steps {
                echo 'Hello Jenkins and Docker!'
            }
        }
    }
}

点击Build Now
jenkins主从节点安装及pipeline构建_第9张图片
如图所示:可以发现构建成功,链路闭环
jenkins主从节点安装及pipeline构建_第10张图片

你可能感兴趣的:(jenkins,docker,运维)