Вставить параметр в Jenkins job с помощью EnvInject плагина
В джобе есть параметр VERSION где выбирается имя ветки для деплоя, если job запускается вручную. Но этот job запускается и GitLab hook'ом и когда он запускается хуком выбирается значение VERSION по умолчанию, т.к. никто в GUI ветку не выбирает из списка веток, и значение по умолчанию - origin/master.
Можно как-то сделать так, чтоб в версию по умолчанию подставлялось значение которое приходит из хука (имя ветки), которое ловится gitlab plugin'ом и ставится в переменную gitlabBranch? Чтоб потом, если отрыли свойства билда, в параметре VERSION была указана реальная ветка с которой он был сбилжен? Я не долго думая написал так:
gitParameter defaultValue: "${env.gitlabBranch ?: "origin/master"}"
Но это работает не так как ожидается, а именно env.gitlabBranch принимает значение с предыдущего билда, т.к. на этапе инициализации переменной текущее, которое было в hook-e ещё не видно Дженкинсом, оно будет видно например в stage если там сделать echo ${env.gitlabBranch}.
И тут я читаю рекомендации у gitlab плагина:
что если вы хотите запускать своб джобу И руками И web hook-ом то вам нужно сделать вот такие настройки
И я, всё то проделав:
поставил галки в джобе:
- Keep Jenkins Environment Variables
- Keep Jenkins Build Variables
- Override Build Parameters
добавил скрипт в section "Groovy Script":
import hudson.model.*def
env = Thread.currentThread()?.executable.parent.builds[0].properties.get('envVars')
def map = [:]
if (env['gitlabSourceBranch'] != null) {
map['branch'] = env['gitlabBranch']
}
return map
Ожидал что переменная branch будет доступна на раннем этапе и при вызове джобы хуком с ветки deploy это:
gitParameter defaultValue: "${branch ?: "origin/master"}"
увидит ветку "deploy". Но нет, не работает, переменная пустая или её вообще нет (билд падает при доступе к ней). Так же пробовал "${env.branch}", "${params.branch}".
Вопрос, как мне всё таки подставлять эту переменную приходящую с хука в дефолт параметр билда (VERSION который). Можно и не в дефолт, но главное чтоб потом, когда отрыли свойства билда, в его параметрах была указана реальная ветка с которой он сбилдился, а не что-то другое сбивающее с толку.