---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.2
  - property: og:type
    content: article
  - property: article:section
    content: Интеграция с другими сервисами
  - property: og:title
    content: GitLab
  - property: article:tag
    content: Сборник инструкций
alternate:
  - https://yandex.ru/support/tracker/en/user/gitlab.md
  - https://yandex.ru/support/tracker/ru/user/gitlab.md
  - href: ru/user/gitlab.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
title: Как работает связь между Яндекс Трекером и GitLab
description: Из статьи вы узнаете, как работает связь между Трекером и GitLab.
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/tracker/ru/llms.txt


# GitLab


В Трекере можно настроить интеграцию с репозиторием GitLab, чтобы отображать в задачах Трекера связи с коммитами и мерж-реквестами в репозитории.

Чтобы добавить в задачу ссылку на коммит или мерж-реквест, укажите [ключ задачи](*issuekey) в комментарии к коммиту или описании мерж-реквеста, например: `Исправление ошибки TEST-123`. Подробнее читайте в разделе [Интеграция с репозиториями](https://yandex.ru/support/tracker/ru/user/add-repository.md).

* Чтобы настроить связи между задачами Трекера и коммитами, можно использовать один из способов:

  - Настроить вебхук в репозитории — рекомендуем использовать этот способ синхронизации, если вы используете репозиторий GitLab на собственном сервере. Он позволяет быстро синхронизировать данные и отображать новые коммиты в задачах в Трекер.

    [Вебхук](#webhook)

  - Настроить периодический опрос репозитория — Трекер будет периодически запрашивать информацию о коммитах в репозитории.

    Этот способ синхронизации можно настроить для репозиториев, размещенных онлайн или развернутых на собственном сервере.

    [Настроить опрос репозитория](#poll)

    {% note warning "" %}

    При опросе репозитория связи с коммитами могут отображаться в Трекере с задержкой до 10 часов.

    {% endnote %}

* Чтобы настроить связи между задачами Трекера и мерж-реквестами, вы можете создать в репозитории вебхук, который будет обращаться к API Трекера и передавать данные о мерж-реквестах.

   [Настроить в репозитории вебхук для мерж-реквестов](#relation)


## Настроить в репозитории вебхук для коммитов {#webhook}

{% note warning "" %}

Синхронизация коммитов с помощью вебхука доступна для репозиториев, размещенных на собственных серверах вашей компании.

{% endnote %}

1. В Трекере получите URL и токен для настройки вебхука: [Как получить URL и токен](https://yandex.ru/support/tracker/ru/user/add-repository.md#get-token).

1. Откройте ваш инстанс GitLab и перейдите к настройкам хука:
    * Для включения интеграции на весь [инстанс GitLab](https://yandex.cloud/ru/docs/managed-gitlab/concepts/) (требуются права администратора GitLab):
        1. В панели слева нажмите на раскрывающийся список **Your work** и выберите пункт **Admin Area**.
        1. Перейдите в раздел **System Hooks**.
    * Для включения интеграции на отдельный проект:
        1. Перейдите в необходимый проект.
        1. В панели слева нажмите кнопку **Settings** и выберите пункт **Webhooks**.

1. В поле **URL** введите значение URL, которое вы скопировали в Трекере.

1. В поле **Secret token** введите значение токена, которое вы скопировали в Трекере.

1. В разделе **Trigger** выключите все опции, кроме **Push events**.

1. В разделе **SSL verification** включите опцию **Enable SSL verification**.

1. Нажмите кнопку **Add system hook** (**Add webhook** для отдельного проекта).

<!-- source: ru/_includes/gitlab/test-hook.md -->
Чтобы проверить, что вебхук работает корректно:

1. Создайте или выберите существующую задачу в Tracker, в которой вы будете тестировать связь с коммитом.

1. В вашем репозитории создайте коммит и укажите в его комментарии ключ задачи, например: `Исправление ошибки TEST-123`.

1. Убедитесь, что на странице задачи в Tracker на вкладке **Коммиты** отображается информация о вашем коммите.
<!-- endsource: ru/_includes/gitlab/test-hook.md -->


## Настроить в репозитории вебхук для мерж-реквестов {#relation}


Чтобы настроить связи между задачами в Трекере и мерж-реквестами, создайте в вашем репозитории GitLab вебхук, который будет обращаться к API Трекера и передавать данные о мерж-реквестах.

Чтобы привязать мерж-реквест к задаче, укажите ее [ключ](*issuekey) в названии или описании нового мерж-реквеста. Ссылка на мерж-реквест появится на странице задачи в разделе **Связи с внешними приложениями**.


Дополнительно можно включить автоматическое создание комментариев в задаче с информацией о мерж-реквестах. Автоматическое комментирование доступно только при использовании Managed Service for GitLab.


<!-- source: ru/_includes/gitlab/create-hook.md -->
### Создайте хук для интеграции {#create-hook}

Чтобы создать вебхук для связи задач с мерж-реквестами:

1. Создайте в вашей организации технический аккаунт, от имени которого будут отправляться запросы к API Трекера. [Как добавить пользователей в Трекер](https://yandex.ru/support/tracker/ru/add-users.md)
1. Получите для созданного технического аккаунта OAuth-токен для доступа к API Яндекс Трекера: [Как получить токен](https://yandex.ru/support/tracker/ru/api-ref/access.md).
1. Проверьте наличие доступа к API с помощью запроса [Получить информацию о текущем пользователе](https://yandex.ru/support/tracker/ru/api-ref/users/get-user-info.md).
1. Откройте инстанс GitLab и перейдите к настройкам хука:
    * Для включения интеграции на весь инстанс (требуются права администратора GitLab, читайте [документацию Managed Service for GitLab](https://yandex.cloud/ru/docs/managed-gitlab/concepts/)):
        1. На панели слева нажмите на раскрывающийся список **Your work** и выберите пункт **Admin Area**.
        1. Перейдите в раздел **System Hooks**.
    * Для включения интеграции на отдельный проект:
        1. Перейдите в необходимый проект.
        1. На панели слева нажмите кнопку **Settings** и выберите пункт **Webhooks**.
1. Укажите параметры хука:
   * **URL**:

      ```
      https://api.tracker.yandex.net/v3/system/gitlab/receive?comments=true&<тип_организации>=<идентификатор_организации>
      ```

      Где:

      * `comments=true` — включает автоматическое создание комментариев в задаче со ссылкой и информацией о мерж-реквестах. Удалите этот параметр из URL, если комментирование не нужно. Параметр доступен только для Managed Service for GitLab.
      * `<тип_организации>` — может принимать следующие значения:
        - `x_cloud_org_id` — для организации Yandex Identity Hub.
        - `x_org_id` — для организации Яндекс 360 для бизнеса.
      * `<идентификатор_организации>`

       <!-- source: ru/api-ref/_includes/org-id.md -->
       Чтобы узнать идентификатор организации, перейдите на страницу **Администрирование** → [**Организации**](https://tracker.yandex.ru/admin/orgs) и скопируйте значение поля **идентификатор**.
       <!-- endsource: ru/api-ref/_includes/org-id.md -->

    * **Secret token** — OAuth-токен технического аккаунта, который вы получили, в формате `OAuth <содержимое_токена>`.
      Например: `OAuth y0__xAbc******`.
    * В разделе **Trigger** выключите все опции, кроме **Merge request events**.
    * В разделе **SSL verification** включите опцию **Enable SSL verification**.

1. Нажмите кнопку **Add system hook** (**Add webhook** для отдельного проекта).

На странице появится раздел **System Hooks** (**Project Hooks** для отдельного проекта), в котором отобразится созданный хук и его параметры.
<!-- endsource: ru/_includes/gitlab/create-hook.md -->

<!-- source: ru/_includes/gitlab/test-hook.md -->
### Протестируйте хук {#test-hook}

1. В разделе **System Hooks** (**Project Hooks** для отдельного проекта) нажмите кнопку **Test**.
1. В раскрывающемся списке выберите пункт **Merge request events**.

Тестовый запрос должен вернуть ответ `Hook executed successfully: HTTP 204`. Если тестовый запрос возвращает ошибку, значит параметры хука указаны неверно.
<!-- endsource: ru/_includes/gitlab/test-hook.md -->

<!-- source: ru/_includes/gitlab/test-hook.md -->
### Проверьте результат {#test-mr}

Чтобы проверить, что вебхук работает корректно:

1. Создайте или выберите существующую задачу в Tracker, в которой вы будете тестировать связь с коммитом.

1. В вашем репозитории создайте мерж-реквест и укажите в его названии или описании ключ задачи, например `Исправление ошибки TEST-123`.

1. Убедитесь, что на странице задачи в Tracker в разделе **Связи с внешними приложениями** отображается информация о вашем мерж-реквесте.


   Если вы использовали Managed Service for GitLab и включили автоматическое комментирование при создании вебхука, то в задаче появится комментарий со ссылкой на мерж-реквест и информацией о нем.
<!-- endsource: ru/_includes/gitlab/test-hook.md -->


### Узнайте больше {#see-also}

* [Документация Managed Service for GitLab](https://yandex.cloud/ru/docs/managed-gitlab/)

* [Практическое руководство по интеграции GitLab с Яндекс Трекером](https://yandex.cloud/ru/docs/managed-gitlab/tutorials/tracker-integration).


## Настроить опрос репозитория {#poll}

### Подключить онлайн-репозиторий {#repo}

Чтобы подключить репозиторий на [GitLab](https://gitlab.com) к Трекеру:

{% note info "" %}

Закрытый репозиторий доступен только авторизованным пользователям GitLab (**Internal project**) или команде проекта (**Private project**).

{% endnote %}

1. Получите на GitLab токен для доступа к вашему репозиторию. Подробную инструкцию о том, как получить токен, читайте в [документации GitLab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token). Для корректной работы Трекера при настройке разрешения включите опции **read_repository** и **read_api**.

1. <!-- source: ru/_includes/make-sure-admin.md -->
   Убедитесь, что вы авторизованы в Трекере как [администратор](https://yandex.ru/support/tracker/ru/role-model.md).
   <!-- endsource: ru/_includes/make-sure-admin.md -->

1. <!-- source: ru/_includes/repository-path.md -->
   В Трекере на панели слева нажмите ![](../_assets/svg/actions.svg)</svg> → ![](../_assets/svg/admin.svg)</svg> **Администрирование**, затем откройте раздел ![](../_assets/svg/repositories.svg)</svg> **Репозитории**.
   <!-- endsource: ru/_includes/repository-path.md -->

1. Нажмите кнопку **Добавить** и выберите **Репозиторий**.

1. В поле **Платформа** выберите GitLab.

1. Для опции **Адрес сервера** выберите значение **gitlab.com**.

1. В поле **Репозиторий** укажите адрес в формате `https://gitlab.com/<логин_владельца_репозитория>/<имя_репозитория>` и токен для подключения.

1. Нажмите кнопку **Добавить**.

1. Убедитесь, что статус репозитория отображается в Трекере как **Подключен**.

### Подключить репозиторий на собственном сервере {#on-premise}

Перед подключением получите токен для доступа к репозиторию. Подробную инструкцию о том, как получить OAuth-токен, читайте в [документации GitLab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token). Для корректной работы Трекера при настройке разрешения включите опции **read_repository** и **read_api**.

<!-- source: ru/_includes/on-premise-server.md -->
Чтобы подключить к Трекеру репозиторий на собственном сервере:

1. <!-- source: ru/_includes/make-sure-admin.md -->
   Убедитесь, что вы авторизованы в Трекере как [администратор](https://yandex.ru/support/tracker/ru/role-model.md).
   <!-- endsource: ru/_includes/make-sure-admin.md -->

1. <!-- source: ru/_includes/repository-path.md -->
   В Трекере на панели слева нажмите ![](../_assets/svg/actions.svg)</svg> → ![](../_assets/svg/admin.svg)</svg> **Администрирование**, затем откройте раздел ![](../_assets/svg/repositories.svg)</svg> **Репозитории**.
   <!-- endsource: ru/_includes/repository-path.md -->

1. Нажмите кнопку **Добавить** и выберите **Репозиторий**.

1. В поле **Платформа** выберите тип вашего репозитория.

1. Для опции **Адрес сервера** выберите значение **Собственный**.

1. В поле **Репозиторий** укажите адрес репозитория на вашем сервере. Подключение к серверу должно осуществляться по технологии OAuth 2.0.

1. В поле **Токен с платформы** укажите токен для подключения к вашему серверу.

1. Нажмите кнопку **Добавить**.

1. Убедитесь, что статус репозиториев отображается в Трекере как **Подключен**.
<!-- endsource: ru/_includes/on-premise-server.md -->

[*issuekey]: Ключ задачи — это уникальный идентификатор, который содержится в ссылке на задачу. Он состоит из ключа очереди и номера, например `TEST-123`.