Введение
Внимание! Данный способ устарел. Для новых установок (начиная с версии GitLab Plugin 1.2) перейдите к новой версии данного руководства.
Настройка GitLab
Для разграничения доступа необходимо создать в GitLab отдельного пользователя.
Зарегистрируем в GitLab нового пользователя jenkins, дадим ему права доступа к нужному проекту, а затем скопируем Private-token созданного пользователя.
Для этого заходим в Profile Settings -> Account и копируем оттуда свой private-token
Настройка Jenkins
Выбор подходящего плагина
На сегодняшний момент (январь 2016) есть два плагина Jenkins для интеграции GitLab: это GitLab Plugin и Gitlab Merge Request Builder. Второй плагин Gitlab Merge Request Builder у меня после настройки не заработал: он успешно подключался к GitLab, но никак не реагировал на новые megre-requests. Поэтому в данной статье мы рассмотрим настройку GitLab Plugin.
Сразу хотелось бы отметить что плагины имеют похожие настройки, и чтобы не запутаться в том какой конкретно плагин мы настраиваем, лучше удалить из Jenkins плагин Gitlab Merge Request Builder, оставив только GitLab Plugin.
Перезагрузка Jenkins
После установки нужного плагина рекомендуется перезагрузить Jenkins-сервер. Для этого перейдите по адресу http://your-server.ru:8080/restart.
Настройка Jenkins GitLab Plugin
Заходим в Jenkins->Настроить Jenkins -> Конфигурирование системы. Ищем вкладку Gitlab.
В поле "Gitlab host URL" пишем адрес корня нашего GitLab сервера
В поле "API Token" пишем Api-token пользователя jenkins, которого мы создали на GitLab сервере.
Нажимаем "Test Connection"
Настройка сборки проекта в Jenkins
Теперь пришло время настроить сборку конкретного проекта. Создадим в Jenkins новый проект. Назовём его, к примеру, MyProject1.
Настройка получения нужной ветки из Git-репозитория
Без этого шага вместо merge-реквестов Jenkins будет собирать ветку master текущего репозитория.
- В разделе "Управление исходным кодом" выбираем Git Repositories и указываем путь к нашему git-репозиторию. Дальше щёлкаем на кнопку дополнительный настроек и выставляем:
Branch Specifier = origin/${gitlabSourceBranch} - В разделе Additional Behaviours нажимаем Add и выбираем Merge before build.
- Задаём Name of repository: origin
- Задаём Branch to merge: ${gitlabTargetBranch}
Пример настроек показан на картинке:
Настройка GitLab Plugin
Ищем раздел "Триггеры сборки" и ставим галочку "Build when a change is pushed to GitLab"
Пример настроек показан на картинке:
Копируем "GitLab CI Service URL".
Ставим Hook для новых пул-реквестов в GitLab
Для этого открываем страницу проекта на GitLab.
Заходим в Settings -> Web Hooks и прописываем скопированный на предыдущем шаге адрес "GitLab CI Service URL"
После добавления должна появиться кнопка "Test hook". Нажимаем её и убеждаемся, что в Jenkins запустится сборка нашего проекта MyProject1
Проверка
Для проверки создадим новый мерж-реквест.
Сразу же увидим, что в Jenkins запустилась сборка этого merge-request.
По окончании сборки увидим в GitLab сообщение от Jenkins: