简介

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 Label base
Container Name base
操作系统 centos-7
Docker 18.06.0
Helm 2.11.0
Kubectl Stable release
内置工具 unzip、which、make、wget、zip、bzip2、git

podTemplate nodejs

名称 类型 / 版本
Jenkins Agent Label nodejs
Container Name nodejs
操作系统 centos-7
Node 9.11.2
Yarn 1.3.2
Docker 18.06.0
Helm 2.11.0
Kubectl stable release
内置工具 unzip、which、make、wget、zip、bzip2、git

podTemplate maven

名称 类型 / 版本
Jenkins Agent Label maven
Container Name maven
操作系统 centos-7
Jdk openjdk-1.8.0
Maven 3.5.3
Docker 18.06.0
Helm 2.11.0
Kubectl stable release
内置工具 unzip、which、make、wget、zip、bzip2、git

podTemplate go

名称 类型 / 版本
Jenkins Agent Label go
Container Name go
操作系统 centos-7
Go 1.11
GOPATH /home/jenkins/go
GOROOT /usr/local/go
Docker 18.06.0
Helm 2.11.0
Kubectl stable release
内置工具 unzip、which、make、wget、zip、bzip2、git