声明式Jenkins管道使用现有的Kubernetes Pod模板

ssc*_*327 5 jenkins openshift kubernetes jenkins-pipeline

我在OpenShift集群中使用OpenShift Jenkins图像。默认的Jenkins映像将导致Jenkins容器被预先配置为指向我的Kubernetes集群。此外,该容器还定义了两个Kubernetes Pod模板,一个用于Maven,一个用于Node.js.

在此处输入图片说明

在此处输入图片说明

我现在想做的是使用声明性管道并引用这些容器。我尝试了以下

  agent {
     kubernetes {
     //cloud 'kubernetes'
     label 'maven'
     }
  }
Run Code Online (Sandbox Code Playgroud)

但这给出了一个错误说明

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:

WorkflowScript:4:缺少代理类型“ kubernetes”所需的参数:containerTemplate @第4行,第10列。

        kubernetes {

        ^
Run Code Online (Sandbox Code Playgroud)

我可以在声明性管道中找到的所有(示例)都显示了在指定代理时定义的Pod模板。

是否可以在声明管道中重用已经定义的模板?

小智 5

这是一个使用预定义 pod 模板的示例。

pipeline {
  agent {
      label "maven"
  }
  stages {
    stage('Run maven') {
      steps {
        sh 'mvn -version'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您的原始管道定义实际上定义了一个全新的 pod 模板,因此在强制执行containerTeamplates参数要求时出现错误。使用现有模板时,您只需在agent块中指定标签即可。