使用Jenkins管道仅执行选定的作业

时间:2019-03-14 16:49:37

标签: jenkins jenkins-plugins

我有这个詹金斯管道,它有多个阶段。在这些阶段中,有多个作业正在执行。 在构建作业时,我希望有一组复选框,并且管道应该只构建我在管道阶段中检查过的内容。我可以使用任何插件或方法来实现此目的吗?

示例管道代码。

按照下面的示例,存在名为作业_A1,作业_B1,作业_C1,作业_D1,作业_A2,作业_B2,作业_C2和作业_D2的作业。如果单击“使用参数构建”,它会提示我复选框,并且我应该能够检查我想要的任何作业,以便管道将仅构建我检查过的作业。

预先感谢。

pipeline {
  agent {label 'server01'}
  stages {
    stage('Build 01') {
      steps {

        parallel (
                    "BUILD A1" : {
                        build job: 'job_A1',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD B1" : {
                        build job: 'job_B1',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD C1" : {
                        build job: 'job_C1',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD D1" : {
                        build job: 'job_D1',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
            )
        }
    }

    stage('Build 02') {
      steps {

        parallel (
                    "BUILD A2" : {
                        build job: 'job_A2',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD B2" : {
                        build job: 'job_B2',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD C2" : {
                        build job: 'job_C2',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
                    "BUILD D2" : {
                        build job: 'job_D2',
                            parameters:[
                                string(name: 'PARAM01', value: "$PARAM01"),
                                string(name: 'PARAM02', value: "$PARAM02")
                                ]
                        },
            )
        }
    }

      }
}

2 个答案:

答案 0 :(得分:0)

您可以使用ExtendedChoiceParameter完成所需的操作。基本上,您还将使用此jenkins插件来参数化工作名称。 您可以使用如屏幕截图所示的复选框列表 screenshot

答案 1 :(得分:0)

感谢@ mbn217的回答,但是ExtendedChoice参数对我的情况没有太大帮助。 无论如何,我可以使用布尔值参数并使用脚本标记在管道内调用它。

管道脚本示例

stage ('BUILD A') {
            steps {
                script {
                if (params.get('boolA',true)) {
                build job: '_build_A', parameters:  [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
            }   else {
                echo "A is not selected to build"
                }
                }

            }   
        }

        stage ('BUILD B') {
            steps {
                script {
                if (params.get('boolB',true)) {
                build job: '_build_B', parameters:  [string(name: 'param1', value: "$param1"),string(name: 'param2', value: "$param2")]
            }   else {
                echo "B is not selected to build"
                }
                }

            }   
        }
相关问题