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

Execute only selected jobs using Jenkins pipe line

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

管道代码示例。

根据下面的示例,有作业名为 job_A1、job_B1、job_C1、job_D1、job_A2、job_B2、 job_C2 和 job_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")
                                ]
                        },
            )
        }
    }

      }
}

您可以使用ExtendedChoiceParameter来完成您想要的。基本上你也需要使用这个 jenkins 插件来参数化作业名称。 您可以使用屏幕截图中显示的复选框列表

感谢@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"
                }
                }

            }   
        }