jenkins-groovy - 如何读取 Jenkins 旧构建注入(inject)的环境变量

标签 jenkins-groovy

我正在尝试使用groovy脚本读取旧的jenkins构建环境变量(以提取下游作业)。 我目前正在使用

build.getEnvVars()

但收到弃用警告。 有人可以告诉我读取这些旧构建环境变量的最佳方法是什么吗?

最佳答案

使用管道,这是一种从下游传播所有环境变量的方法,以便您可以使用 getBuildVariables() 方法,包括在调用 makeEnvAvailable 之前进行的任何编辑> 在下游作业中。

注意:方法 org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction getEnvironment 需要脚本批准

// Downstream job 'down' Jenkinsfile
@NonCPS
def makeEnvAvailable() {
    // Goes through every environment variable and sets it again
    // This will populate 'downstreamBuild.getBuildVariables()'
    env.getEnvironment().each { k,v -> env.setProperty(k, v)  }
}

pipeline {
    agent any
    parameters {
        booleanParam(name: 'QUICK_BUILD', defaultValue: false,
            description: 'Skip running git clean and perform a quick build' )
    }
    environment {
        TEST_VER="${TEST_VER}"
        VIVARIUM="/tools/pancake"
    }
    stages {
        stage("Env set") {
            steps { 
                script {
                    // Will be visible upstream regardless
                    env.THIS_IS_A_TEST = "test_env_set"

                    // Not set on env. Not available
                    ANOTHER_TEST = "not_env_set"

                    // Does not modify the param or env. Not available
                    QUICK_BUILD = "not_actually_modifying_params"

                    // Set to the same value, but now available upstream
                    env.GIT_COMMIT = env.GIT_COMMIT

                    // Makes every other environment variable available
                    makeEnvAvailable()
                }
            }
        }
    }
}

// Upstream job 'Up' Jenkinsfile
pipeline {
    agent any
    stages {
        stage ("Downstream") {
            steps {
                script {
                    def down = build job: "down"
                    echo down.getBuildVariables().toString()
                    echo down.buildVariables
                }
            }
        }
    }
}

您的上游作业现在应该可以访问下游作业中的每个环境变量。

关于jenkins-groovy - 如何读取 Jenkins 旧构建注入(inject)的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63511622/

相关文章:

jenkins - 为什么 currentBuild.build().getActions(ParametersAction).get(0) 返回默认参数值而不是 Jenkins 管道中的指定值?

linux - 如何在循环的 shell 脚本中访问 jenkins groovy 变量的值

jenkins - 在 Jenkins 工作中执行常规脚本

jenkins - 如何将用户输入密码与凭据密码进行比较

jenkins - 如何在执行某些步骤(如 when 指令)后跳过 Jenkins 阶段?

json - 如何使用groovy修改jenkins工作区上的JSON属性?

jenkins - 使用共享库时没有此类 DSL 方法 'getVar'

jenkins - 如何确定 cron 计划何时触发了多分支作业?

jenkins - 在其他 jenkins groovy 脚本中使用 groovy 类