Вебхуки — это событийно-ориентированный механизм интеграции с внешними системами. Они позволяют автоматически отправлять HTTP-запросы при возникновении определённых событий в Deckhouse Code:

  • Поддержка широкого спектра событий: Push, Merge Request, Issue, Pipeline, Release и др.
  • Настройка запросов: выбор метода (POST, PUT), формат JSON, настройка заголовков.
  • Безопасность: Secret Token, SSL/TLS, фильтрация по событиям.
  • Поддержка на уровне проектов, групп и всей инстанции.
  • Интеграция с CI/CD, мониторингом, мессенджерами и системами трекинга.
  • Механизм повторных попыток при сбоях соединения (Retry).

Вебхуки проектов поддерживаются в GitLab CE.

Вебхуки групп

Чтобы добавить вебхук на уровне группы, откройте страницу группы и перейдите в «Настройки» → «Вебхуки». Далее выберите интересующие события. Вебхуки групп поддерживают все события из проектов, а также:

  • События участников;
  • События проектов;
  • События подгрупп.

Если у пользователя не указан публичный email, в теле запроса email будет отображаться как "[УДАЛЕНО]".

События участников срабатывают при создании, изменении или удалении участников группы или проекта.

Создание вебхуков групп

Заголовок запроса:

X-Gitlab-Event: Member Hook

Пример запроса:

{
  "created_at": "2025-07-02T15:23:25Z",
  "updated_at": "2025-07-02T15:35:51Z",
  "group_name": "agriculture",
  "group_path": "agriculture",
  "group_id": 1130,
  "user_username": "reported_user_barabara",
  "user_name": "Estella Gleason",
  "user_email": "[УДАЛЕНО]",
  "user_id": 58,
  "group_access": "Guest",
  "expires_at": "2025-07-09T00:00:00Z",
  "event_name": "user_add_to_group"
}

Изменение вебхуков групп

Заголовок запроса:

X-Gitlab-Event: Member Hook

Пример запроса:

{
  "created_at": "2025-07-02T15:23:25Z",
  "updated_at": "2025-07-02T15:36:21Z",
  "group_name": "agriculture",
  "group_path": "agriculture",
  "group_id": 1130,
  "user_username": "reported_user_barabara",
  "user_name": "Estella Gleason",
  "user_email": "[УДАЛЕНО]",
  "user_id": 58,
  "group_access": "Guest",
  "expires_at": null,
  "event_name": "user_update_for_group"
}

Удаление вебхуков групп

Заголовок запроса:

X-Gitlab-Event: Member Hook

Пример запроса:

{
  "created_at": "2025-07-02T15:23:25Z",
  "updated_at": "2025-07-02T15:36:21Z",
  "group_name": "agriculture",
  "group_path": "agriculture",
  "group_id": 1130,
  "user_username": "reported_user_barabara",
  "user_name": "Estella Gleason",
  "user_email": "[УДАЛЕНО]",
  "user_id": 58,
  "group_access": "Guest",
  "expires_at": null,
  "event_name": "user_remove_from_group"
}

События проекта

Срабатывает при создании или удалении проектов в группе и подгруппах.

Создание вебхуков проекта

Заголовок запроса:

X-Gitlab-Event: Project Hook

Пример запроса:

{
  "event_name": "project_create",
  "created_at": "2025-07-02T15:40:09Z",
  "updated_at": "2025-07-02T15:40:09Z",
  "name": "rspec",
  "path": "rspec",
  "path_with_namespace": "flant-development/agriculture/rspec",
  "project_id": 28,
  "project_namespace_id": 1130,
  "owners": [
    {
      "name": "Administrator",
      "email": "[УДАЛЕНО]"
    }
  ],
  "project_visibility": "private"
}

Удаление вебхуков проекта

Заголовок запроса:

X-Gitlab-Event: Project Hook

Пример запроса:

{
  "event_name": "project_destroy",
  "created_at": "2025-07-02T15:40:09Z",
  "updated_at": "2025-07-02T15:42:04Z",
  "name": "rspec",
  "path": "rspec",
  "path_with_namespace": "flant-development/agriculture/rspec",
  "project_id": 28,
  "project_namespace_id": 1130,
  "owners": [
    {
      "name": "Administrator",
      "email": "[REDACTED]"
    }
  ],
  "project_visibility": "private"
}

События подгрупп

Срабатывает при создании или удалении подгруппы.

Создание вебхуков подгрупп

Заголовок запроса:

X-Gitlab-Event: Subgroup Hook

Пример запроса:

{
  "created_at": "2025-07-02T15:44:02Z",
  "updated_at": "2025-07-02T15:44:02Z",
  "event_name": "subgroup_create",
  "name": "finances",
  "path": "finances",
  "full_path": "flant-development/finances",
  "group_id": 1659,
  "parent_group_id": 1123,
  "parent_name": "Flant development",
  "parent_path": "flant-development",
  "parent_full_path": "flant-development"
}

Удаление вебхуков подгрупп

Заголовок запроса:

X-Gitlab-Event: Subgroup Hook

Пример запроса:

{
  "created_at": "2025-07-02T15:44:02Z",
  "updated_at": "2025-07-02T15:44:02Z",
  "event_name": "subgroup_destroy",
  "name": "finances",
  "path": "finances",
  "full_path": "flant-development/finances",
  "group_id": 1659,
  "parent_group_id": 1123,
  "parent_name": "Flant development",
  "parent_path": "flant-development",
  "parent_full_path": "flant-development"
}