首页 > 解决方案 > Jenkins Kubernetes 插件:声明式管道和 pod 模板继承

问题描述

Jenkins Kubernetes Plugin 的文档指出:

与脚本化的 k8s 模板不同,声明性模板不继承自父模板。如有必要,您需要显式声明继承。 插件自述文件

不幸的是,没有关于如何显式声明从构建的主模板继承的示例。我尝试使用标签,但是继承似乎被忽略了。

def parentLabel = "my-project-${UUID.randomUUID().toString()}"

pipeline {
    agent {
        kubernetes {
            label parentLabel
            yamlFile "jenkins-agent.yml"
            // a global template in the cloud configuration
            inheritFrom "docker"
        }
    }
    stages {
        // .. stages using the above agent
        stage( 'Test Container' ) {
            agent {
                kubernetes {
                    label "xcel-spring-stage-${UUID.randomUUID().toString()}"
                    inheritFrom parentLabel
                    yaml """
                    apiVersion: v1
                    kind: Pod
                    metadata:
                      namespace: build
                      labels:
                        project: x-celerate-spring-application
                    spec:
                      containers:
                        - name: spring-application
                          # defined in previous stages, skipped for brevity
                          image: ${env.IMAGE_NAME}:${version}.${env.BUILD_NUMBER}
                    """
                }
            }
        }
    }
}

我如何/通过什么模板名称引用在inheritFrom阶段代理声明中的语句中在管道顶部声明的模板以实际显式定义继承?

标签: jenkinskubernetes

解决方案


推荐阅读