使用声明性Jenkins管道的块中的条件表达式,而不是“stages”

hi3rlvi2  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(120)

我们有很多声明性的Jenkins管道代码,用于我们主环境中的某个Jenkins示例,现在我们希望有第二个Jenkins示例用于一个隔离的环境,该环境应该使用相同的管道,但在这里和那里进行一些调整后表现有所不同。
我们要区分这两个示例的方法是在Jenkins master中定义一个全局环境变量,这样我们就可以有条件stages,以及在stage块下有whenscript块的条件步骤。(例如if (env.ENVIRONMENT == "ISOLATED") { <do something else> }
我们如何才能实现与parameters {}options {}块类似的功能?我知道我们可以在共享库中使用“变量”来为choice参数提供不同的选项,但是我们希望在某些情况下能够少/多1个参数,这些参数只在特定环境中是不相关/相关的。

t3psigkw

t3psigkw1#

如果你可以将你的管道转换成脚本化的管道,你应该可以很容易地做到这一点。

if (env.ENVIRONMENT.contains("ISOLATED")) {
    properties([
        parameters([
            string(name: 'Cloud', defaultValue: 'AWS', description: 'Cloud Type')
        ]),
        // This is a option
        buildDiscarder(
            logRotator(
                daysToKeepStr: '7',
                numToKeepStr: '25'
            )
        )
    ])
} else {
    println "If not set something different"
}

pipeline {
    agent any
    stages {
        stage("Hello") {
            steps {
                echo "Building Something"
            }
        }
    }
}

看看this如何生成选项片段。

相关问题