Добавить уведомления в Telegram Gitlab CI

Добавить уведомления в телеграм (чат, группу или т.п.) после выполнения пайплайна.

Краткая настройка

Добавлям настройки

в настройках необходимого репозитория (Settings > CI/CD > Secret variables) добавляем секретные переменные:

  • TELEGRAM_BOT_TOKEN — id бота при регистрации у @BotFather
  • TELEGRAM_USER_ID — id чата в который будет отсылаться сообщение. (Будет отсылаться только в том случае, если боту от этого чата уже было отослано любое сообщение. Для группы достаточно добавить бота в группу).

Создадим скрипт ci-notify.sh

#!/bin/bash

TIME="10"
URL="https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage"
TEXT="Deploy status: $1%0A%0AProject:+$CI_PROJECT_NAME%0AURL:+$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID/%0ABranch:+$CI_COMMIT_REF_SLUG"

curl -s --max-time $TIME -d "chat_id=$TELEGRAM_USER_ID&disable_web_page_preview=1&text=$TEXT" $URL > /dev/null

Запуск и использование

...
deploy:
    stage: deploy
    script:
        - sh ci-notify.sh "your success message ✅"

notify_error:
    stage: notify
    script:
        - sh ci-notify.sh "your fail message ❌"
    when: on_failure

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

Бонус, найти ID чата

один из вариантов: по адресу https://api.telegram.org/bot${BOT_TOKEN}/getUpdates можно увидеть все изменения происходящие с ботом и там же посмотреть chat id группы или пользователя.

Gitlab CI

Кратко как настроить Gitlab CI можно почитать тут — Настройка CI в GitLab .gitlab-ci.yml

Источники

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.