#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 до выполнения конвейера?