Интеграция с GitLab

Отображение в задаче

  1. Вкладка "GitLab" - будет отображать следующие данные из gitLab:
  • Issues в которых была упомянута задача METEOR с соответствующим статусом (Открыто, Закрыто).
  • Merge Requests (MR), связанные с задачей, включая их статусы (Открыт, Объединено, Закрыт). MR и задачи связаны в соотношении n:m, поэтому задача может быть связана с несколькими MR, а MR — с несколькими задачами;
  • Текущее состояние выполнения Pipline для Merge Request (Created, Running, Waiting, Failed, Pending, Canceled, Skipped, Manual, Scheduled, Success).
  1. Вкладка "История" - будет отображать изменения по MR и Issues (комментарии, обновления статусов):

Настройка интеграции

Необходимо настроить METEOR и GitLab, чтобы интеграция заработала.

METEOR

  1. Создайте специальную роль, в которой будут как минимум два права:

    • "Просмотр задач";
    • "Добавление комментариев".

    (Администрирование -> Пользователи и права -> Роли -> Конкретная роль -> раздел "Задачи")

  1. Создайте пользователя для интеграции

    • назначьте ему созданную роль;
    • добавьте этого пользователя во все проекты, где нужна интеграция с GitLab.

    (Администрирование -> Пользователи и права -> Пользователи)

  1. Сгенерируйте API-токен для этого пользователя (он понадобится вам на стороне GitLab). Для генерации токена необходимо:
    • войдите в систему под учётной записью нового пользователя.
    • перейдите в Профиль (нажмите на аватарку в правом верхнем углу и выберите Профиль).
    • далее "Токены доступа".
    • нажмите на кнопку "+ Токен API".

Вы должны знать!

Важно! Обязательно скопируйте сгенерированный токен и надёжно сохраните его. Токен нельзя будет посмотреть позже!

  1. Активируйте модуль GitLab в настройках проекта (Настройки проекта -> Модули).
  2. Выдайте права на просмотр вкладки "GitLab" нужным ролям:
    • "Показывать содержимое GitLab".

GitLab

  1. Добавьте Webhook в каждом репозитории:

    • перейдите в Настройки -> Webhook;
    • нажмите "Добавить новый webhook".

Нужно настроить URL-адрес, который указывает на конечную точку (Endpoint) webhook GitLab на вашем сервере METEOR (/op/webhooks/gitlab).

Вам понадобится Токен API, который ранее получили в METEOR. Добавьте его в URL в качестве простого параметра GET с именем key. В итоге URL должен выглядеть примерно так:

https://mycompany.u-meteor.ru/op/webhooks/gitlab?key=4221687468163843

  1. Примечание: для событий, которые должны запускать webhook, выберите следующие:
  • Push-события (все ветви);
  • Комментарии;
  • Issues;
  • Merge Requests;
  • Pipline.

Вы должны знать!

Примечание: если вы находитесь в локальной сети, вам может потребоваться разрешить запросы к локальной сети в вашем экземпляре GitLab.

  1. Мы рекомендуем вам включить проверку SSL перед добавлением webhook.

Теперь интеграция настроена с обеих сторон, и вы можете её использовать!

Использование интеграции с GitLab

Создание Merge Requests (MR)

  1. Создайте ветку.

    • В задаче в METEOR во вкладке GitLab нажмите кнопку "Git-сниппеты", скопируйте имя ветки, нажав соответствующую кнопку:
    • Откройте GitLab и создайте ветку, введя имя которое скопировали из задачи:

Таким образом, все ветки будут иметь общий шаблон, а поскольку в названии ветки указан идентификатор задачи, будет легко увидеть связь между MR и задачей, просмотрев список Merge Requests в GitLab.

  1. Добавьте коммит с автоматически сгенерированным описанием.

    • Используйте поле "Описание коммита" из меню «Git-сниппеты» на вкладке "GitLab":
    • Создайте коммит в gitlab, вставив скопированное описание коммита:
    • После внесения изменений вы можете создать MR. Заголовок и комментарий со ссылкой на соответствующую задачу METEOR будут заполнены автоматически, в случае если в ветке есть только один коммит:
  1. Из-за ограничения в один коммит или если есть необходимость создавать ветку как можно раньше, в меню «Git-сниппеты» можно создать пустой коммит. По кнопке «Создать ветку с пустым коммитом», который создаст ветку и добавит в неё пустой коммит с помощью одной команды.

Связь Merge Requests (MR) с задачами METEOR

Для того, чтобы связать MR с задачей METEOR, в описании MR или в комментарии должна быть:

  • ссылка на задачу, ранее скопированная из METEOR;
  • или укажите «МТ#ID», где ID - это идентификатор задачи METEOR, в описании. Например, MT#50. Данные о MR подтянутся в METEOR и будут отображаться на вкладке "GitLab".

GitLab будет использовать сообщение первого коммита в качестве описания MR (при условии, что коммит только один)

Вы должны знать!

Обратите внимание, что «МТ#ID» чувствителен к регистру. «мт#ID» - не будет работать.

Вы должны знать!

Используйте в MR «РР#» вместо «МТ#», чтобы синхронизировать MR без комментариев.

Если вы хотите опубликовать только один комментарий из закрытого МР (имеет упоминание «РР#»), вы можете использовать «МТ#» непосредственно в этом комментарии. Таким образом, только этот конкретный комментарий будет опубликован в METEOR, а остальные комментарии останутся закрытыми.

Описание ветки можно изменить до создания Merge Request, что позволяет дополнительно описать изменения. В описание Merge Request также можно включить ссылки на дополнительные задачи METEOR.

В GitLab MR будет выглядеть следующим образом.

Нажмите на "Создать MR":

Если статус MR изменится, это соответствующим образом отразится в задаче METEOR. Пожалуйста, ознакомьтесь с примером ниже.

Текущее состояние выполнения Pipline для MR в METEOR отображается справа:

Проблемы со ссылками

Интеграция METEOR с GitLab позволяет связывать задачи GitLab напрямую с задачами METEOR.

Изначально, если Issues и Merge Requests ещё не было, вы увидите следующее сообщение на вкладке GitLab.

Вы можете создать новую задачу в GitLab или отредактировать уже существующую, введя код МТ#ID в заголовок или описание задачи. После сохранения изменений или создания задачи в GitLab, она будет отображаться на вкладке "GitLab" в METEOR.