流水线节点(Agent)¶
Agent 描述了整个 流水线 执行过程或者某个 阶段 的执行环境,必须出现在 描述文件 顶部或每一个 阶段 。
本文基于 Kubernetes plugin for Jenkins 插件描述如何扩展 Kubernetes 中运行的 Jenkins Agent。
Kubernetes Pod 模板介绍¶
这个 Kubernetes 插件会在 Jenkins Agent Pod 中运行一个特殊的容器 jnlp ,目的是为了在 Jenkins Controller 和 Jenkins Agent 之间进行通信,所以需要定义其他容器来运行流水线步骤,并且可以通过 container 命令来切换不同的容器。
内置 Label 说明¶
应用工作台通过 podTemplate 能力声明了 Label,提供了一些内置 SDK 供用户使用。
SDK¶
底层运行时都支持 Docker 和 Podman,而操作系统有所区别:
SDK(Label) | 版本信息 | 默认容器名称 | 操作系统 |
---|---|---|---|
base | - | base | Centos 7.9 Ubuntu 22.04 |
maven | java: 8 maven: 3.9.9 | maven | Centos 7.9 Ubuntu 22.04 |
maven-jdk11 | java: 11 maven: 3.9.9 | maven | Centos 7.9 Ubuntu 22.04 |
maven-jdk17 | java: 17 maven: 3.9.9 | maven | Ubuntu 22.04 |
maven-jdk21 | java: 21 maven: 3.9.9 | maven | Ubuntu 22.04 |
go | go: 1.17.13 | go | Centos 7.9 Ubuntu 22.04 |
go-1.18.10 | go: 1.18.10 | go | Ubuntu 22.04 |
go-1.20.14 | go: 1.20.14 | go | Ubuntu 22.04 |
go-1.22.6 | go: 1.22.6 | go | Ubuntu 22.04 |
python | python: 3.8.19 python、python3 均指向 python3.8 | python | Centos 7.9 Ubuntu 22.04 |
python-2.7.9 | python: 2.7.9 python、python2 均指向 python2.7 | python | Ubuntu 22.04 |
python-3.10.9 | python: 3.10.9 python、python3 均指向 python3.10 | python | Ubuntu 22.04 |
python-3.11.9 | python: 3.11.9 python、python3 均指向 python3.11 | python | Ubuntu 22.04 |
node.js | node: 16.20.2 yarn: 1.22.22 | nodejs | Centos 7.9 Ubuntu 22.04 |
node.js-18.20.4 | node: 18.20.4 yarn: 1.22.22 | nodejs | Ubuntu 22.04 |
node.js-20.17.0 | node: 20.17.0 yarn: 1.22.22 | nodejs | Ubuntu 22.04 |
内置命令行工具¶
内置工具 | 版本 | 操作系统 |
---|---|---|
podman | Ubuntu 22.04:5.1.0、 Centos 7.9:3.0.1 | Ubuntu 22.04、Centos 7.9 |
docker | 27.1.2 | Ubuntu 22.04、Centos 7.9 |
helm | 3.15.4 | Ubuntu 22.04、Centos 7.9 |
kubectl | v1.31.0 | Ubuntu 22.04、Centos 7.9 |
argocd | v2.12.1 | Ubuntu 22.04、Centos 7.9 |
argo rollouts | v1.7.2 | Ubuntu 22.04、Centos 7.9 |
sonar_scanner | 4.8.0.2856 | Ubuntu 22.04、Centos 7.9 |
yq | v4.44.3 | Ubuntu 22.04、Centos 7.9 |
make | - | Ubuntu 22.04、Centos 7.9 |
build-essential | Ubuntu 22.04 | |
libcurl4-openssl-dev | - | Ubuntu 22.04 |
libssl-dev | - | Ubuntu 22.04 |
wget | - | Ubuntu 22.04、Centos 7.9 |
git | - | Ubuntu 22.04、Centos 7.9 |
curl | - | Ubuntu 22.04、Centos 7.9 |
autoconf | - | Ubuntu 22.04、Centos 7.9 |
zip | - | Ubuntu 22.04、Centos 7.9 |
unzip | - | Ubuntu 22.04、Centos 7.9 |
jq | - | Ubuntu 22.04、Centos 7.9 |
locales | - | Ubuntu 22.04 |
vim | - | Ubuntu 22.04、Centos 7.9 |
gettext | - | Ubuntu 22.04、Centos 7.9 |
tree | - | Ubuntu 22.04、Centos 7.9 |
gcc | - | Centos 7.9 |
gcc-c++ | - | Centos 7.9 |
curl-devel | - | Centos 7.9 |
glibc-common | - | Centos 7.9 |
Note
注意 Centos 7.9 已经 EOL,目前保留仅是为了兼容旧版本的流水线构建环境数据,建议新环境统一使用 Ubuntu 22.04 支持的 SDK。
使用内置 Label¶
-
可以在 Jenkinsfile 中通过 node('go') 使用 go 的 podTemplate。
-
也可以在 编辑流水线 页面上选择类型为 node 且 label 为 go 的 Agent。
自定义 podTemplate¶
如果对构建环境有特定要求,可以参考创建自定义镜像来实现。