具有声明性 Jenkins 管道的除“stages”之外的块中的条件表达式

问题描述 投票:0回答:1

我们有很多声明式 Jenkins 管道代码,用于主环境中的某个 Jenkins 实例,现在我们希望为隔离环境创建第二个 Jenkins 实例,该实例应该使用相同的管道,但行为与在这里和那里进行一些调整。

我们区分这两个实例的方法是在 Jenkins master 中定义一个全局环境变量,这样我们就可以拥有条件阶段,以及在

when 下使用 
script
stage
 块的条件步骤
块。 (例如
if (env.ENVIRONMENT == "ISOLATED") { <do something else> }

我们如何使用

parameters {}
options {}
块实现类似的效果?我知道我们可以使用共享库的“变量”来为
choice
参数提供不同的选项,但我们希望在某些情况下能够少 1 个/多 1 个参数,这些参数仅在以下情况下不相关/相关:特定环境。

jenkins jenkins-plugins jenkins-declarative-pipeline
1个回答
0
投票

如果您可以将 Pipeline 转换为脚本化 Pipeline,您应该能够很轻松地做到这一点。

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了解如何生成选项片段。

© www.soinside.com 2019 - 2024. All rights reserved.