【问题标题】:Jenkins Pipeline best way to use choice parameter for checking conditionsJenkins Pipeline 使用选择参数检查条件的最佳方式
【发布时间】:2018-11-01 10:28:51
【问题描述】:

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

Job Y 有 3 个条件:

if Choice==A 然后task 1

else if Choice==B 然后做task 2

elsetask 3

卡在Job Y 的 STAGE 中声明选择条件。

附言尝试了 Active Choice 参数,无法通过它。

谁能帮忙解答一下这个问题的逻辑?

【问题讨论】:

    标签: jenkins continuous-integration jenkins-pipeline jenkins-plugins


    【解决方案1】:

    我假设作业 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 {...} 块来使用脚本化管道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多