Jenkins Pipeline 使用选择参数检查条件的最佳方式

Jenkins Pipeline best way to use choice parameter for checking conditions

管道执行两个作业:Job XJob Y。 管道有一个选择参数,Job Y 需要它。 选择参数选项:ABC.

Job Y 有 3 个条件:

if Choice==A 然后做 task 1

else if Choice==B 然后做 task 2

elsetask 3

Job Y 阶段声明选择条件时卡住。

p.s。尝试了 Active Choice 参数,无法通过它。

任何人都可以帮助解决这个问题的逻辑吗?

我假设作业 Y 作为下游作业从您的管道中调用。因此,在某个地方(可能是管道的尽头)您将拥有:

build job: 'CloudbeeFolder1/Path/To/JobY', propagate: false, wait: false, parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: "${env.SOME_VALUE}"]]

然后在 "other side" 上的 JobY 中,您有:

environment {
    PARAM_FROM_PIPELINE = "${params.MY_PARAM}"
}

这会将您的参数值获取到 JobY 中的环境变量中。

根据任务是什么,您可以通过传递 PARAM_FROM_PIPELINE 在批处理(或 sh)文件中执行它们,如下所示:

stages {
    stage("Do Tasks") {
        steps {
            bat "mybatchfile.bat ${env.PARAM_FROM_PIPELINE}"
        }
    }
}

最后,在 mybatchfile.bat 中,您可以像这样读取 ${env.PARAM_FROM_PIPELINE} 的值:

@ECHO OFF

SET PARAM_VAL=%1
ECHO PARAM VALUE IS: %PARAM_VAL%

IF %PARAM_VAL% = "A" (
  REM DO TASK1
) ELSE (
    IF %PARAM_VAL% = "B" (
        REM DO TASK2
    ) ELSE (
        REM DO TASK3
    )
)

如果您不想在批处理文件中封装 if-else 逻辑,您可以在 Jenkinsfile 中使用 script {...} 块来使用脚本管道。