我假设作业 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 逻辑封装在批处理文件中,您可以在 Jenkinsfile 中使用 script {...} 块来使用脚本化管道。