Запуск сборки Jenkins для запроса на слияние из веб-хука GitLab

Я хочу, чтобы Jenkins (1.561) создавал запросы на слияние (pull), отправленные в GitLab (6.7.5), инициируемые веб-ловушкой запроса на слияние. У меня есть параметризованная сборка и плагины Jenkins "GitLab Merge Request Builder" (1.2.0) и "GitLab Hook" (1.0.0). Переход на Jenkins CI, к сожалению, не реальный вариант.

Плагин Merge Request Builder может создавать запросы на слияние, если переменные gitlabMergeRequestId, gitlabTargetBranch, а также gitlabSourceBranch доступны. Это хорошо работает, когда плагин опрашивает сам репозиторий, или я запускаю сборку с ручной загрузкой (например, curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters), но я не могу сделать это с помощью крючка.

Используя плагин GitLab Hook, я могу получить необходимые данные в полезной нагрузке JSON, но значения имеют "неправильные" ключи:

  • gitlabMergeRequestId является id
  • gitlabTargetBranch является target_branch
  • gitlabSourceBranch является source_branch

Я попытался настроить параметры сборки с помощью требований плагина GitLab Merge Request Builder, как Name и значения переменных как Default Value, К сожалению (и, вероятно, намеренно), переменные в Default Value поля не заменяются, поэтому Jenkins ищет запрос на слияние с идентификатором ${id} и аналогичные значения ветви.

Я не нашел способа конфигурирования полезной нагрузки, отправляемой из GitLab, и нет никаких опций конфигурации ни для плагина GitLab Hook, ни для имен параметров, используемых плагином GitLab Merge Request Builder.

Я рассматриваю возможность написания небольшого PHP-скрипта для перехвата и изменения полезной нагрузки из POST перед передачей ее Jenkins. Хотя я уверен, что это сработает, это определенно кажется излишне сложным.

Единственный реальный вариант, который я вижу, - это изменить источник плагинов, но это делает их апгрейд PITA.

Я упустил из виду что-то очевидное или действительно нет более простого способа запуска сборок Merge Request с помощью веб-хука от GitLab до Jenkins?

3 ответа

Взгляните на плагин Gitlab Merge Request Builder. Настройте Jenkins From Manage Jenkins и установите URL-адрес gitlab в построителе запроса на слияние. Следуйте инструкциям на https://github.com/timols/jenkins-gitlab-merge-request-builder-plugin 1

Проверьте этот новый плагин (gitlab-plugin), возможно, это поможет. Этот плагин эмулирует Jenkins как веб-сервис GitlabCI для использования с GitlabHQ.

Вы можете использовать Generic Webhook Trigger для Дженкинса. Он может внести любое значение из структуры JSON webhook в сборку.

https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

Другие вопросы по тегам