Вставить переменную в параметре в параметризованную сборку в Jenkins - PullRequest
2 голосов
/ 10 апреля 2020

Иметь задание Дженкинса с параметром сборки BRANCH. Когда задание запускается вручную, пользователь может выбрать ветку из списка для развертывания. Список предоставлен git плагином.

Но эта работа также может быть вызвана хуком GitLab. В этом случае параметр будет иметь значение по умолчанию, потому что не получил никакого ввода.

Есть ли способ получить параметр BRANCH с соответствующей информацией? С именем ветви, полученным из перехвата GitLab.

PS Я думаю, что можно установить значение по умолчанию в значение ${BRANCH_FROM_HOOK ?: default_value}, чтобы проверить наличие переменной BRANCH_FROM_HOOK Нужно только найти способ, как поместить в BRANCH_FROM_HOOK переменную, значение ответвления от хука. Я теперь, что плагин gitlab, который получает хук, устанавливает в gitlab.Branch значение ветви, из которой приходит хук.

ОБНОВЛЕНИЕ: Что я сделал для достижения этой цели:

  • Укажите git параметр:

gitParameter defaultValue: "${env.gitlabBranch ?: "origin/master"}", но не как gitlabBranch не задан на этапе запуска сборки.

  • Установить параметры задания как на странице плагина gitlab здесь :

    • Сохранить переменные среды Jenkins
    • Сохранить переменные сборки Jenkins
    • Переопределить параметры сборки
  • Добавлено в раздел "Groovy script":

import hudson.model.*
def env = Thread.currentThread()?.executable.parent.builds[0].properties.get('envVars')
def map = [:]

if (env['gitlabBranch'] != null) {
    map['branch'] = env['gitlabBranch'] 
}
return map

После этого добавить параметр:

gitParameter name: branch, defaultValue: "${env.gitlabBranch ?: "origin/master"}"

, чтобы соответствовать map['branch'], как сказано в do c - не работает, также пытался:

gitParameter defaultValue: "${branch ?: "origin/master"}" - также не работал.

Не работал означает, см origin/master значение, целое число фактической ветви, получаемой из ловушки gitlab.

Где я ошибаюсь?

1 Ответ

2 голосов
/ 14 апреля 2020

Ответ - использовать Generi c Плагин Webhook , а не GitLab. И используйте эту функцию, чтобы сопоставить его переменные с параметрами задания:

Если ваша работа параметризована, и вы разрешаете переменные, имена которых совпадают с этими параметрами, тогда плагин будет заполнять параметры при запуске задания. , Это означает, что вы можете, например, использовать параметры в сочетании с плагином SCM, например, GIT Плагин, чтобы выбрать ветку.

Конец.)

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