首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins Pipeline Kubernetes:动态定义pod yaml

Jenkins Pipeline Kubernetes:动态定义pod yaml
EN

Stack Overflow用户
提问于 2018-06-28 15:58:07
回答 1查看 1.2K关注 0票数 1

我正在尝试在kubernetes中运行一个测试docker镜像,它将测试我的应用程序。应用程序容器和测试容器具有相同的版本,如果任何测试或应用程序发生更改,该版本都会递增。如何为kubernetes插件动态定义pod yaml,以便在第一阶段(在kubernetes集群之外)获取版本,然后使用容器的正确版本更新pod yaml?

代码语言:javascript
复制
APP_VERSION = ""

pod_yaml = """
apiVersion: v1
kind: Pod
metadata:
  labels:
    some-label: ci--my-app
spec:
  containers:
  - name: test-runner
    image: my.docker.registry/app-tester:${-> APP_VERSION}
    imagePullPolicy: Always
    command:
    - cat
    tty: true
"""
pipeline {
  agent none
  stages {
    stage('Build and Upload') {
        agent { node { label 'builder' } }
        steps {

            script {
                APP_VERSION = sh(
                  script: "cat VERSION",
                  returnStdout: true
                  ).trim()
            }
        }
    }
    stage('Deploy and Test application') {
      agent {
        kubernetes {
          label 'ci--data-visualizer-kb'
          defaultContainer 'jnlp'
          yaml pod_yml
        }
      }
      steps {
        container('test-runner') {
          sh "echo ${APP_VERSION}"
          sh "ls -R /workspace"
        }
      }
    }        
  }
}

管道中的kubernetes块不接受包含${-> APP_VERSION}的字符串pod_yaml的延迟计算。有没有解决这个问题的办法,或者我做得完全错了?

PS:由于其他原因,我不能使用脚本化管道。因此,我必须坚持使用声明性管道。

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 16:02:41

这可能有点奇怪,但如果您没有其他选择,您可以使用jinja2模板引擎和python动态生成您想要的文件。看看它--它相当健壮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51077628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档