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

10

Я хочу, чтобы 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 as Nameи значений переменных как Default Value. К сожалению (и, вероятно, намеренно), переменные в Default Valueполях не заменяются, поэтому Дженкинс ищет запрос на слияние с идентификатором ${id}и аналогичными значениями ветви.

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

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

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

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

Мартин Леманн
источник

Ответы:

0

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

xaniasd
источник