Уведомления о результате CI/CD
Депешер может сообщать команде об успехе или ошибке этапа CI/CD. Сборочный процесс отправляет POST-запрос на входящий канал, а получатели задаются в личном кабинете: Email, Telegram, группа Telegram или Пачка.
Ниже — скрипт для runner с Bash и curl. Его можно вызвать как команду этапа в вашей системе CI/CD.
Подготовьте канал и переменные
- Создайте и подтвердите нужные исходящие каналы.
- Создайте входящий канал для сборок и свяжите его с выбранными получателями.
- В настройках CI сохраните его URL как переменную
DEPESHER_URL. - Если включена защита входящего канала, сохраните токен как секрет
DEPESHER_TOKEN. Для канала без защиты переменную можно не задавать.
Передайте эти переменные окружения процессу, который выполняет скрипт. Не выводите их значения в журнал сборки.
Отправьте результат этапа
Замените ./deploy.sh реальной командой своего этапа. В этом примере уведомление относится именно к этой команде, а не ко всему pipeline:
bash
#!/usr/bin/env bash
if ./deploy.sh; then
stage_status=0
notification="CI/CD: развёртывание завершено успешно"
else
stage_status=$?
notification="CI/CD: ошибка развёртывания, код $stage_status"
fi
headers=(--header 'Content-Type: text/plain')
if [ -n "${DEPESHER_TOKEN:-}" ]; then
headers+=(--header "Authorization: Bearer $DEPESHER_TOKEN")
fi
if ! curl \
--fail \
--silent \
--show-error \
--max-time 15 \
--output /dev/null \
--request POST \
"${headers[@]}" \
--data-binary "$notification" \
"$DEPESHER_URL"; then
printf '%s\n' 'Не удалось отправить результат этапа в Депешер' >&2
fi
exit "$stage_status"Код основной команды сохраняется до HTTP-запроса. Поэтому неуспешное развёртывание останется неуспешным для CI, а ошибка уведомления попадёт в журнал отдельно. Опция --fail позволяет обнаружить HTTP-ошибку при отправке.
Добавьте контекст сборки
В текст полезно включить проект, окружение, версию и ссылку на запуск. Имена соответствующих переменных отличаются у CI-систем — подставьте переменные своего runner. Для единообразного оформления можно передавать JSON и использовать шаблон Депешера.
Как проверить
Запустите тестовый этап с командами true и false вместо развёртывания. Проверьте текст уведомления, историю канала и статус этапа в CI.
Скрипт отправляет сообщение, когда управление доходит до HTTP-запроса. При принудительной остановке runner или потере машины он может не выполниться. Для отмен и результата всего pipeline настройте отдельный завершающий этап средствами своей CI-системы.
Если запрос выполнен, но уведомления нет, откройте диагностику доставки.