在管道开始时循环环境指令内的环境变量列表

Loop over a list of environment variables inside the environment directive at start of pipeline

我还没有找到有关如何执行此操作的任何示例。

而不是这个

pipeline {
    agent { label 'docker' }
    environment {
        ENV1 = 'default'
        ENV2 = 'default'
    }

我想这样做:

pipeline {
    agent { label 'docker' }
    environment {
        for (env in envs) {
           env.name = env.value
        }
    }

也许我可以在 pipeline{} 指令之前生成一个映射并以某种方式将其传递给 environment{}?我不想在一个阶段内执行此操作,我希望在所有阶段的顶级环境指令中执行此操作。

根据 environment 指令 Documentation 不可能在 environment 块内执行 ant 代码,但是您可以通过创建自定义步骤并更新相关的使用 script 的环境变量阻止您想要更新包含环境值的 env 字典的任何 groovy 代码。
类似于:

 pipeline {
    agent { label 'docker' }
    stages {
        stage('Prepare Environment') {
            steps {
                script{
                    envParams = ['param1': 'value1','param2': 'value2']
                    envParams.each { key ,value ->
                        env[key] = value
                    }
                }
            }
        }
        ...
    }
}

这将影响 管道中所有阶段 的环境参数,而不仅仅是 Prepare Environment 阶段。

另一个简单的选项是 运行 在开始执行之前在管道的顶层添加一个类似的代码,它的效果与前一个选项相同,管道看起来更简洁本身。类似于:

ENV_PARAMS= ['param1': 'value1','param2': 'value2']
ENV_PARAMS.each { key ,value ->
    env[key] = value
}

pipeline {
    agent { label 'docker' }
    ...
}