Jenkins Agent 说明

简介

Agent 部分指定了整个流水线或特定的部分, 将会在 Jenkins 环境中执行的位置,这取决于 Agent 区域的位置,该部分必须在 Pipeline 的顶层 或 Stage 中被定义。

内置的 podTemplate

在使用过程当中,每个 Pod 至少包含 jnlp 容器用于 Jenkins Master 与 Jenkins Agent 的通信。除此之外用户可以自行添加 podTemplate 当中的容器,以满足自己的需求。用户可以选择使用自己传入 Pod yaml 的形式来灵活的控制构建的运行环境,通过 container 指令可以进行容器的切换。

  1. pipeline {
  2. agent {
  3. kubernetes {
  4. //cloud 'kubernetes'
  5. label 'mypod'
  6. yaml """
  7. apiVersion: v1
  8. kind: Pod
  9. spec:
  10. containers:
  11. - name: maven
  12. image: maven:3.3.9-jdk-8-alpine
  13. command: ['cat']
  14. tty: true
  15. """
  16. }
  17. }
  18. stages {
  19. stage('Run maven') {
  20. steps {
  21. container('maven') {
  22. sh 'mvn -version'
  23. }
  24. }
  25. }
  26. }
  27. }

同时为了减少降低用户的使用成本,我们内置了一些 podTemplate,使用户可以避免 yaml 文件的编写。

在目前版本当中我们内置了 4 种类型的 podTemplate,basenodejsmavengo,并且在 Pod 中提供了隔离的 Docker 环境。

可以通过指定 Agent 的 label 使用内置的 podTempalte,例如要使用 nodejs 的 podTemplate,可以在创建 Pipeline 时指定 label 为 nodejs,如下给出示例。

nodejs-podtemplate

  1. pipeline {
  2. agent {
  3. node {
  4. label 'nodejs'
  5. }
  6. }
  7. stages {
  8. stage('nodejs hello') {
  9. steps {
  10. container('nodejs') {
  11. sh 'yarn -v'
  12. sh 'node -v'
  13. sh 'docker version'
  14. sh 'docker images'
  15. }
  16. }
  17. }
  18. }
  19. }

podTemplate base

名称类型 / 版本
Jenkins Agent Labelbase
Container Namebase
操作系统centos-7
Docker18.06.0
Helm2.11.0
KubectlStable release
内置工具unzip、which、make、wget、zip、bzip2、git

podTemplate nodejs

名称类型 / 版本
Jenkins Agent Labelnodejs
Container Namenodejs
操作系统centos-7
Node10.16.3
Yarn1.16.0
Docker18.06.0
Helm2.11.0
Kubectlstable release
内置工具unzip、which、make、wget、zip、bzip2、git

podTemplate maven

名称类型 / 版本
Jenkins Agent Labelmaven
Container Namemaven
操作系统centos-7
Jdkopenjdk-1.8.0_222
Maven3.5.3
Docker18.06.0
Helm2.11.0
Kubectlstable release
内置工具unzip、which、make、wget、zip、bzip2、git

podTemplate go

名称类型 / 版本
Jenkins Agent Labelgo
Container Namego
操作系统centos-7
Go1.12.10
GOPATH/home/jenkins/go
GOROOT/usr/local/go
Docker18.06.0
Helm2.11.0
Kubectlstable release
内置工具unzip、which、make、wget、zip、bzip2、git