Выполнение только выбранных заданий с использованием конвейера Jenkins. - PullRequest
0 голосов
/ 14 марта 2019

У меня есть этот трубопровод Дженкинса, который имеет несколько этапов. На этих этапах выполняется несколько заданий. Когда я создаю задание, я хотел бы иметь набор флажков, и трубопровод должен строить только то, что я проверял на этапах конвейера. Есть ли какие-либо плагины или методы, которые я могу использовать для достижения этой цели?

Пример кода конвейера.

Согласно приведенному ниже примеру, есть задания, называемые 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")
                                ]
                        },
            )
        }
    }

      }
}

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Спасибо @ mbn217 за ваш ответ, но параметр ExtendedChoice не сильно помог в моем сценарии.В любом случае, я мог бы сделать это, используя логические параметры и вызывая его внутри конвейера, используя тег script.

Пример конвейерного скрипта

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"
                }
                }

            }   
        }
0 голосов
/ 14 марта 2019

Вы можете использовать ExtendedChoiceParameter , чтобы выполнить то, что вы хотите.По сути, вам также потребуется параметризовать имена заданий, используя этот плагин jenkins.Вы можете использовать список флажков, как показано на снимке экрана screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...