回答问题

我在 OpenShift 集群中使用 OpenShift Jenkins 映像。此默认 Jenkins 映像会生成一个预配置为指向我的 Kubernetes 集群的 Jenkins 容器。此外,该容器还定义了两个 Kubernetes pod 模板,一个用于 maven,一个用于 nodejs。

在此处输入图像描述

在此处输入图像描述

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

  agent {
     kubernetes {
     //cloud 'kubernetes'
     label 'maven'
     }
  }

但这给出了一个错误说明

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

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

Kubernetes {

^

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

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

Answers

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

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

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐