Уведомления

После выполнения CI/CD задач часто требуется отправить уведомление о результате сборки — например, в командный чат (Slack, Telegram) или другой сервис. Сделать это можно с помощью дополнительных шагов в workflow.

Для отправки сообщений в Slack можно воспользоваться готовыми GitHub Actions, которые работают и в GitVerse. Предварительно необходимо создать Incoming Webhook URL в Slack (через настройки приложения Slack) и сохранить этот URL в секретах репозитория (например, под именем SLACK_WEBHOOK).

Ниже показан упрощенный пример workflow, который отправляет в Slack уведомление с результатом сборки:

name: Build and Notify
on:
  push:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run tests
        run: npm test
  notify:
    runs-on: ubuntu-latest
    needs: build
    if: always()
    steps:
      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          SLACK_CHANNEL: ci-alerts
          SLACK_COLOR: ${{ job.status }}
          SLACK_MESSAGE: "Build job ${{ needs.build.result }}"
          SLACK_TITLE: "CI/CD Notification"

В этом примере определены две задачи: build (запускает тесты) и notify (отправляет уведомление). Вторая задача имеет параметр needs: build и условие if: always(), поэтому она выполнится в любом случае после завершения job build — даже если тесты упали.

Шаг Slack Notification использует действие из Marketplace (rtCamp Slack notify) и передает ему необходимые переменные окружения:

  • SLACK_WEBHOOK – URL вебхука Slack (берется из секретов репозитория);
  • SLACK_CHANNEL – канал Slack для отправки сообщения;
  • SLACK_COLOR – цвет индикатора сообщения (в примере использует статус job — зеленый при успехе, красный при ошибке);
  • SLACK_MESSAGE – текст сообщения (в примере указывается статус задачи сборки);
  • SLACK_TITLE – заголовок сообщения в Slack.

Аналогичным образом можно настроить уведомления через другие сервисы: например, отправлять сообщения в Telegram с помощью бота (через HTTP API) или отправлять email-уведомления.

Теперь после каждого запуска workflow в указанный Slack-канал будет приходить сообщение с результатом (успешно или с ошибкой). Такой подход помогает оперативно информировать команду о состоянии сборок.