Jenkins: динамически установить параметр defaultValue - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь настроить конфигурацию многоотраслевого конвейера, в которой по умолчанию установлен флажок «Развернуть»: true в непроизводственных ветвях и false в производственной сборке.

pipeline {
  parameters{
    booleanParam(defaultValue: true, description: 'Do deploy after build', name: 'DEPLOY')

Есть ли какой-то метод для условной установки defaultValue=false при $BRANCH_NAME == "production"?

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

Я думаю, что мог бы ответить на свой собственный вопрос через кучу экспериментов. Это кажется невероятно простым, но мой тест между двумя ветвями показывает, что параметр Deploy правильно включен / выключен по умолчанию в зависимости от $BRANCH_NAME

def defaultDeploy = true
if ( BRANCH_NAME == "production" )
{
  defaultDeploy = false
}
pipeline {
  parameters{
    booleanParam(defaultValue: defaultDeploy, 
      description: 'Do deploy after build', name: 'DEPLOY')
1 голос
/ 24 марта 2020

Отвечая на вопрос автора более обобщенно c, значения параметров по умолчанию также можно устанавливать динамически, добавляя свойства с помощью плагина EnvInject . Также для запуска примера необходим плагин Extended Choice Parameter . Создайте декларативный конвейерный проект со следующим содержимым:

pipeline {
    agent any
    parameters {
        extendedChoice(
            name: 'ArchitecturesCh',
            defaultValue: "${env.BUILD_ARCHS}",
            multiSelectDelimiter: ',',
            type: 'PT_CHECKBOX',
            value: 'linux-x86_64,android-x86_64,android-arm,android-arm64,ios-arm64,Win32,Win64'
        )
        string(name: 'ArchitecturesStr', defaultValue: "${env.BUILD_ARCHS}", description: "")
    }
    stages {
        stage('Test') {
            steps {
                echo params.ArchitecturesCh
                echo params.ArchitecturesStr
                echo "${env.BUILD_ARCHS}"
            }
        }
    }
}

Затем подготовьте среду с помощью плагина EnvInject. ПРИМЕЧАНИЕ : будьте осторожны, чтобы не связывать sh с другими переменными среды. В моем случае я потерял много времени, думая, что метод не работает, потому что переменная ARCHITECTURES установлена ​​где-то еще. В том же проекте конвейера GUI:

enter image description here

Сохраните и постройте конвейер, обновите страницу sh. Параметры по умолчанию будут доступны в следующей сборке.

enter image description here

0 голосов
/ 18 февраля 2020

В вашем вопросе немного неясно, относится ли BRANCH_NAME к переменной среды (как в env.BRANCH_NAME) или к другому параметру (как в params.BRANCH_NAME).

Если раньше, то есть некоторые переменные среды, это означает, что существует среда, и поэтому узел должен быть выделен с его набором среды. Чтобы выделить узел, необходимо запустить конвейер. Чтобы начать работу, пользователь должен выбрать параметры для запуска конвейера. Так что это проблема типа "курица с яйцом": у вас не может быть переменной среды перед запуском конвейеров, и вам нужно определить параметры перед запуском конвейера.

Если последний, то вы думаете о случае, когда может быть, есть параметр String с именем BRANCH_NAME и логический параметр с именем DEPLOY, а на странице параметров флажок DEPLOY не отмечается при вводе maste в BRANCH_NAME, но как только вы нажмете r, он волшебным образом будет проверен ... тогда это может быть сделано - с большой болью - с помощью плагина Active Choice.

Наконец, если вы хотите чтобы предотвратить любое развертывание из ветви master, вы можете проверить как параметр, так и имя ветви перед развертыванием, и отказаться от развертывания, если параметр имеет значение false или если ветвь имеет значение master.

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