一、背景
通过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+版本,直接点击首页提示升级即可
三、安装相关依赖
相关依赖插件:
Docker plugin
Docker Commons Plugin
Docker API Plugin
Docker Pipeline
Permissive Script Security
Build User Vars
以上均安装后重启jenkins,如果提示:
如果更新过程中,网络不通,可以切换更新源:
Jenkins的update-center,URL为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
上面安装完成后,可以简单测试一下主节点服务是否正常,正常服务如下:
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
从节点搭建
新建节点并保存
保存后,就能得到一串密钥
从节点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后,可以看到
等一会后,就能看到从节点已连上:
这里选用的连接方式如下:
意思是从节点主动连接主节点,默认端口为50000,所以只要确保主节点50000端口放开即可使得从节点连接上。
pipeline测试
new item:选中pipeline类型后点击ok
pipeline的script输入下文案例并保存
pipeline {
agent {
docker { image 'busybox:latest' }
}
stages {
stage('All') {
steps {
echo 'Hello Jenkins and Docker!'
}
}
}
}
点击Build Now
如图所示:可以发现构建成功,链路闭环