Установите значения параметров сборки во время выполнения с помощью конвейера

#jenkins #groovy #jenkins-pipeline #jenkinsfile

#дженкинс #groovy #дженкинс-конвейер

Вопрос:

Я использую частное репозиторий Github с a Jenkinsfile для создания проекта. На самом деле я хотел бы выполнить две отдельные сборки: одну для develop сборки при каждом нажатии на ветку, а другую для qa сборки по ночам. Я создал организацию Github, поскольку это, по-видимому, единственный способ использовать учетные данные для проверки репозитория и выполнения сборки.

Мой файл Jenkins выглядит так:

 node {
    stage('Preparation') {
        properties([[$class: 'ParametersDefinitionProperty',
            parameterDefinitions: [
                [$class: 'StringParameterDefinition', name: 'build_url'],
                [$class: 'StringParameterDefinition', name: 'build_url2'],
            ]
        ]])
        checkout scm
    }
    stage('Build') {
        dir('Vecna_iDeliver_Torso') {
            sh 'npm install'
            sh 'node_modules/.bin/gulp build'
        }
    }
    stage('Upload') {
        sh 'aws s3 sync dist s3://app-dev'
    }
    stage('Cleanup') {
        deleteDir()
    }
}
  

Все это отлично работает, но мне нужно иметь возможность устанавливать переменные среды (URL-адреса сборки) при запуске gulp , и их значения будут зависеть от среды, для которой я хочу создавать. s3 Корзина, в которую я хочу загрузить, также будет зависеть от среды.

Когда я устанавливаю properties вышеуказанное, а затем нахожу задание сборки в моей организации Github, я вижу, что оно принимает параметры сборки. Однако, похоже, у меня нет никакого способа установить их извне. Я могу использовать их только с «Сборкой с параметрами». Это было бы хорошо, если бы я хотел каждый раз запускать сборку вручную, но я хочу, чтобы она выполнялась каждую ночь. Поскольку для двух разных сред требуются разные значения параметров сборки, я не могу установить их по умолчанию.

Есть ли у меня какой-нибудь способ установить значения параметров сборки заранее, используя конвейер Дженкинса?

Комментарии:

1. Вы бы согласились с отдельным файлом Jenkinsfile для каждого задания сборки? Это должно сработать.

2. Я думаю, это не относится к конвейеру. У вас может быть файл свойств (или значения из параметров среды) и использовать эти значения в gulpfile.js во время сборки. Другими словами, просто создайте файл с вашими настройками для каждого хоста и измените скрипты gulpfile, чтобы использовать значения из файла (или system env), и поместите конкретный файл свойств на конкретный хост.

3. @yvs, я не уверен, что это имеет смысл. Задания сборки имеют отдельные определения, которые не изменяются до выполнения задания. Использование gulp означает, что мы изменили бы значения в файле jenkins до выполнения конвейера?