agent 部分指定整个流水线或特定阶段 (Stage) 将在 Jenkins 环境中执行的位置,具体取决于该 agent 部分的放置位置。该部分必须在 pipeline 块的顶层进行定义,但是阶段级别的使用是可选的。有关更多信息,请参阅 Jenkins 官方文档

内置 podTemplate

podTemplate 是一种 Pod 模板,用于创建 Agent。您可以定义在 Kubernetes 插件中使用的 podTemplate。

在流水线运行期间,每个 Jenkins Agent Pod 必须具有一个名为 jnlp 的容器,以便实现 Jenkins Controller 与 Jenkins Agent 之间的通信。此外,您可以在 podTemplate 中添加容器,以满足个性化需求。可选择使用自定义的 Pod YAML 来灵活控制运行时环境(Runtime),并通过 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. }

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

您可以通过指定 Agent 的标签来使用内置 podTemplate。例如,要使用 nodejs 的 podTemplate,在创建流水线时指定标签为 nodejs 即可,具体参阅以下示例。

  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 标签

    base

    容器名称

    base

    操作系统

    centos-7

    Docker

    18.06.0

    Helm

    2.11.0

    Kubectl

    稳定版

    内置工具

    unzip、which、make、wget、zip、bzip2、git

  • podTemplate nodejs

    名称类型/版本

    Jenkins Agent 标签

    nodejs

    容器名称

    nodejs

    操作系统

    centos-7

    Node

    9.11.2

    Yarn

    1.3.2

    Docker

    18.06.0

    Helm

    2.11.0

    Kubectl

    稳定版

    内置工具

    unzip、which、make、wget、zip、bzip2、git

  • podTemplate maven

    名称类型/版本

    Jenkins Agent 标签

    maven

    容器名称

    maven

    操作系统

    centos-7

    Jdk

    openjdk-1.8.0

    Maven

    3.5.3

    Docker

    18.06.0

    Helm

    2.11.0

    Kubectl

    稳定版

    内置工具

    unzip、which、make、wget、zip、bzip2、git

  • podTemplate go

    名称类型/版本

    Jenkins Agent 标签

    go

    容器名称

    go

    操作系统

    centos-7

    Go

    1.11

    GOPATH

    /home/jenkins/go

    GOROOT

    /usr/local/go

    Docker

    18.06.0

    Helm

    2.11.0

    Kubectl

    稳定版

    内置工具

    unzip、which、make、wget、zip、bzip2、git