GitLab Интеграция

Введение в интеграцию с GitLab

Интеграция с GitLab — это дополнительный модуль, который можно добавить к любому из трёх тарифных планов INOUT Проект.

Цель плагина — агрегировать важные данные из GitLab в INOUT Проект для улучшения отчётности, оценки и представления деятельности по разработке, поддерживая тем самым процесс принятия решений для заинтересованных сторон, вовлечённых в проекты и процессы разработки программного обеспечения компании.

Возможности включают очень простое начальное подключение к вашей инстанции GitLab (как в облачной, так и в самохостящейся версии). После установления подключения INOUT Проект отобразит важнейшие элементы из GitLab в настраиваемых и фильтруемых списках (аналогично спискам задач). Это:

  • Репозитории
  • Merge-запросы
  • Коммиты
  • Тесты

включая их наиболее важные атрибуты.

Ключевой момент: INOUT Проект не копирует репозитории физически — код остаётся в GitLab.

Установление подключения

Сначала необходимо получить токен доступа пользователя GitLab с нужными правами.

Выберите пользователя, от имени которого INOUT Проект будет обращаться к GitLab. Это может быть специальный пользователь, например er_integrator.

Отредактируйте профиль этого пользователя.

GitLab_Int_01

Перейдите в раздел Access tokens, выберите все разрешения и создайте персональный токен доступа.

GitLab_Int_02

Picture 3

Скопируйте этот токен.

Picture 4

Теперь вы можете перейти в INOUT Проект и ввести необходимые данные:

Администрирование >> Интеграция с GitLab >> Найти доступные интеграции >> Настроить

Picture 5

Укажите имя подключения, URL и ранее сгенерированный токен доступа.

Примечание: если используется облачная версия, например, https://gitlab.com/my-little-gitlab, введите просто https://gitlab.com/. Видны будут только те проекты, к которым есть доступ у пользователя с токеном.

Сохраните.

Готово! Подключение установлено.

Picture 6

Остальная часть выполняется автоматически в фоновом режиме:

  • INOUT Проект получает все проекты/репозитории, к которым имеет доступ пользователь с токеном.
  • В этих репозиториях создаются webhooks → чтобы информация о новых коммитах, merge-запросах и тестах отправлялась в INOUT Проект.

Устранение неполадок подключения

Проблема A: Не отображаются репозитории из GitLab

Если вы не видите репозитории, можно импортировать их вручную:

Администрирование >> Интеграция с GitLab >> Настроенные интеграции >> [Имя подключения]

В боковом меню выберите Импорт

  • Для самохостящегося GitLab будет доступна группа, представляющая всю инстанцию (см. пример на скриншоте).
  • Для облачного GitLab — список публичных групп, используйте автозаполнение.

Выберите нужную группу, после чего появится список найденных проектов/репозиториев.

Выделите все и нажмите Импорт.

Проблема B: Репозитории найдены, но новые коммиты, merge-запросы и тесты не отображаются

Данные передаются через webhooks, создаваемые в GitLab. Обычно они создаются автоматически. Проверьте:

Проект GitLab >> Настройки >> Webhooks

Если webhook отсутствует:

Администрирование >> Интеграция с GitLab >> Настроенные интеграции >> [Имя]

Боковое меню >> Репозитории >> [Имя репозитория] >> Зарегистрировать все интеграции

Это вручную создаст webhook.

Ключевые слова ссылок

После настройки подключения вы можете использовать данные из GitLab в INOUT Проект. Чтобы использовать интеграцию на максимум, настройте ключевые слова ссылок:

Picture 7

Они позволяют связывать коммиты и merge-запросы с задачами и даже логировать время напрямую из GitLab.

Пример: refs #1234 или closes #1234.

Перейдите в:

Меню “Дополнительно” >> Интеграция с GitLab >> Ссылки

Picture 8

Создайте или отредактируйте ссылку. Подсказки помогут вам.

Основные правила:

  • Задача указывается как #ID, напр. #1234
  • Учёт времени: @1h30m
  • Для коммитов — ключевое слово в сообщении
  • Для merge-запросов — в названии

Сопоставление пользователей

Так как это интеграция двух систем, пользователи в них разные. Все действия (автор коммита, рецензент merge-запроса и т.д.) и лог времени должны быть сопоставлены с пользователями в INOUT Проект.

Сопоставление осуществляется по электронной почте. Убедитесь, что у разработчиков одинаковые email в GitLab и INOUT Проект.

Если это невозможно — добавьте дополнительный email в профиль пользователя INOUT Проект.

Как это работает

Откройте главное окно GitLab-интеграции в:

Меню “Дополнительно” >> Раздел “Дополнения” >> Интеграция с GitLab

На странице доступны:

  • Конфигурируемая панель
  • Меню со списками сущностей и настройками

Репозитории

Функционально простейший, но необходимый список. Есть полезный фильтр “Сервис” — если подключено несколько инстанций GitLab.

Примечания:

  • (Раз)регистрация интеграций создаёт/удаляет webhooks
  • Ручное редактирование — только для отладки
  • Синхронизация — загрузка свежих данных
  • Merge-запросы — список всех merge-запросов этого репозитория

Merge-запросы (Запросы на слияние кода)

Merge request — термин GitLab. В других системах это может быть Pull request. В системе используется общий термин “Запрос кода”.

Примечания:

  • Название MR содержит ключевое слово refs и ID задачи: refs #765 — ссылка на задачу 765
  • “Синхронизация” обновляет данные MR
  • Все атрибуты MR можно отобразить в списке
  • Все, кроме SHA, могут быть использованы как фильтры
  • В списке отображаются тесты (CI/CD), включая статус

Коммиты

Список коммитов тоже позволяет строить отчёты. Содержит информацию о тестах.

Примечание: у коммита нет отдельной карточки в INOUT Проект — переход по ссылке ведёт в GitLab.

Тесты

Тесты упоминались выше. У них есть отдельный список для отчётов.

Обычно используются для мониторинга критичных репозиториев (релиз-кандидаты). Нет карточки — переход ведёт в GitLab.

Синергия — вид из задачи

Как всё отображается в задаче:

  1. Общий статус GitLab-объектов задачи (цвет + иконка)
  2. Название репозиториев с коммитами по задаче
  3. Merge-запросы по задаче
  4. Статус каждого merge-запроса
  5. Результат последнего теста MR
  6. Кнопка “Запустить тест вручную”
  7. Кнопка “Создать merge-запрос”

Создание ветки из задачи

Кнопка доступна в:

Детали задачи >> Меню “Дополнительно”

Выберите репозиторий, имя ветки (предзаполнено ID и темой задачи), исходная ветка — по умолчанию master.

Созданная ветка отображается как тег в блоке GitLab-интеграции в задаче.

Права доступа

Picture 9

Доступны два уровня прав:

  • Просмотр — доступ к модулю через меню
  • Управление — редактирование панели

Глобальная настройка доступна только администратору INOUT Проект.