【问题标题】:How to set up envVars in container in Jenkins pipeline with Kubernetes plugin如何使用 Kubernetes 插件在 Jenkins 管道中的容器中设置 envVars
【发布时间】:2018-12-19 18:01:56
【问题描述】:

我正在使用 Kubernetes 设置 Jenkins 管道,有一个选项可以为 containerTemplate 中的容器设置环境变量。是否有一些选项可以覆盖container 中的这些值,即:

container(
  name: 'my-container',
  envVars: [
    envVar(key: $KEY, value: $VALUE)
 ]) {
   ...
 }

因为某些变量是在构建阶段派生的,无法在podTemplate 中设置。不幸的是,上面的例子不起作用。

【问题讨论】:

  • 你仍然可以像在管道中一样使用普通的 withEnv 助手,除非那不起作用?它有一些奇怪的错误......
  • 因为我使用的是脚本化管道withEnv 为我工作。

标签: kubernetes jenkins-pipeline


【解决方案1】:

请注意,在撰写本文时,docs

容器语句允许直接在每个容器中执行命令。此功能被认为是 ALPHA,因为在并发执行和管道恢复方面仍然存在一些问题

我相信没有选择。但是,您可以尝试在sh 命令中设置变量。例如:

def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(label: label, containers: [
    containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
    containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
  ]) {

    node(label) {
        stage('Get a Maven project') {
            git 'https://github.com/jenkinsci/kubernetes-plugin.git'
            container('maven') {
                stage('Build a Maven project') {
                    sh 'MYENV1=value1 MYEVN2=value2 mvn -B clean install'
                }
            }
        }

        stage('Get a Golang project') {
            git url: 'https://github.com/hashicorp/terraform.git'
            container('golang') {
                stage('Build a Go project') {
                    sh """
                    mkdir -p /go/src/github.com/hashicorp
                    ln -s `pwd` /go/src/github.com/hashicorp/terraform
                    MYENV1=value1 MYEVN2=value2 cd /go/src/github.com/hashicorp/terraform && make core-dev
                    """
                }
            }
        }

    }
}

【讨论】:

  • 这可能也行。如果我使用withEnvsh 之外定义环境变量,那么主命令(在这种情况下为mvn -B clean install)会更简洁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2016-07-29
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多