Могут ли вручную инициируемые задания конвейера принимать пользовательский ввод для параметров? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть две работы (Job1 и Job2). Оба параметра параметризованы с одинаковыми параметрами, но значения параметров отличаются и разработаны с использованием плагина Active-Choice-Parameter (uno).

Я хочу запустить обе работы в конвейере, однако ниже приведено точное требование.

  1. Когда конвейер выполняется, Job1 выполняется и предлагает пользователю ввести параметры (UI). Пользователь вводит / выбирает значения и запускает их для построения.

  2. Как только сборка на задании 1 завершается, пользователю предлагается (утверждение) перейти к следующему заданию 2. Пользователь подтверждает, нажав кнопку «ОК / Продолжить»; и, таким образом, запускается Job2 конвейера. Примечание. Я добился этого с помощью функции ввода в скрипте Groovy.

  3. Значения параметров Job1 должны быть переданы и должны отображаться в Job2; однако пользователь должен иметь возможность видеть и изменять переданные значения для любого параметра в Job2 (UI).

Примечание. Я могу передать значения параметров с помощью «Параметризованного триггерного плагина» в «Действиях после сборки» задания 1

Постановка задачи:

При запуске конвейера не отображается экран параметров пользователя для Job1 или Job2, чтобы пользователь мог вводить / выбирать и изменять параметры для Job1 или Job2 во время выполнения конвейера.

Примечание:

Я могу преодолеть проблему, используя плагин Build Pipeline: Но причина, по которой я не хотел бы рассматривать это решение,

  1. Я не знаю, как я могу вставить элемент ввода скрипта groovy конвейера, который запрашивает утверждение между заданиями.

  2. Я читал, что использование подключаемого модуля конвейера имеет преимущества перед использованием подключаемого модуля сборки

Ниже приведен Groovy-скрипт (конвейерный скрипт)

    agent any   //agent specifies where the pipeline will execute. 
    stages {
        stage ("build PROD") {  //an arbitrary stage name
            steps {
                build 'job1'    //this is where we specify which job to invoke.
            }
        }
        stage ("build DR") {            //an arbitrary stage name
            input{
                message "Press Ok to continue"
                submitter "user1,user2"
                parameters {
                    string(name:'username', defaultValue: 'user', description: 'Username of the user pressing Ok')
                    }
            }
            steps { 
                echo "User: ${username} said Ok."
                build 'job2'    //this is where we specify which job to invoke.
            }
        }
    }
} 

Любое решение было бы очень полезно. Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вы можете просто использовать параметр https://jenkins.io/doc/book/pipeline/syntax/#parameters

Тогда у вас есть пользовательский интерфейс по умолчанию, который проще, чем пользовательский код groovy.

0 голосов
/ 09 июля 2019

Есть ли причина, по которой вы держите работу отдельно? Я хотел бы переоценить ваш поток работ и посмотреть, имеет ли смысл объединять работы в один конвейер.

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