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

时间:2018-11-01 10:28:52

标签: jenkins jenkins-pipeline

管道执行两个作业:作业X和作业Y。 管道具有作业Y所需的选择参数。 选择参数选项:A,B和C。

工作Y具有3个条件:如果Choice == A,则执行任务1 否则,如果Choice == B,则执行任务2 否则执行任务3

在宣布职位Y的阶段的选择条件时陷入困境。

p.s。尝试过的Active Choice参数,无法使用它。

有人可以帮忙解决此问题的逻辑吗?

1 个答案:

答案 0 :(得分:2)

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

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

然后在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逻辑封装在批处理文件中,则可以在Jenkins文件中使用script {...}块来使用脚本化管道。