Я хочу, чтобы Jenkins (1.561) создавал запросы на слияние (pull), отправленные в GitLab (6.7.5), запускаемые веб-ловушкой запроса на слияние. У меня есть параметризованная сборка и плагины Jenkins «GitLab Merge Request Builder» (1.2.0) и «GitLab Hook» (1.0.0). К сожалению, переход на Jenkins CI - это не вариант.
Плагин построителя мерж-реквестов является может создавать запросы на слияние, пока переменные 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
поля не заменен, поэтому Дженкинс ищет запрос на слияние с идентификатором ${id}
и аналогичные значения ветвей.
Я не нашел способа настроить полезную нагрузку, отправляемую из GitLab, и нет параметров конфигурации ни для плагина GitLab Hook, ни для имен параметров, используемых плагином GitLab Merge Request Builder.
Я подумываю написать небольшой PHP-скрипт для перехвата и изменения полезной нагрузки из POST, прежде чем передать ее Дженкинсу. Хотя я уверен, что это сработает, это определенно кажется излишне сложным.
Единственный реальный вариант, который я вижу, - это изменить источник плагинов, но это делает их обновление PITA.
Не упустил ли я что-то очевидное, или действительно нет более простого способа запускать сборки Merge Request с помощью веб-перехватчика от GitLab до Jenkins?
Взгляните на плагин Gitlab Merge Request Builder Plugin. Настройте Jenkins из Manage Jenkins и установите URL-адрес gitlab в построителе запросов на слияние. Следуйте инструкциям на https://github.com/timols/jenkins-gitlab-merge-request-builder-plugin1
Вы можете использовать Generic Webhook Trigger для Jenkins. Он может вносить в сборку любое значение из структуры JSON веб-перехватчика.
https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin
Проверь это новый плагин out (gitlab-plugin), может, поможет. Этот плагин эмулирует Jenkins как веб-службу GitlabCI для использования с GitlabHQ.