Перейти к основному содержимому

Оповещения

Вкладка Оповещения проекта определяет, куда сообщать о результатах задач. Она состоит из двух частей:

  • Серверные каналы — провайдеры уведомлений, которые администратор настроил на сервере в config.json, см. Уведомления. Они общие для всех проектов, и каждый проект решает, использовать ли их.
  • Оповещения проекта — именованные назначения, принадлежащие проекту: чат Telegram, вебхук Slack, список адресов электронной почты и так далее. Шаблоны и расписания выбирают, какие оповещения отправлять.

Обе части можно использовать одновременно.

Вкладка «Оповещения» проекта

Серверные каналы​

Карточка в верхней части страницы показывает каналы, настроенные на сервере. Включите Отправлять оповещения этого проекта в серверные каналы, чтобы получать через них все результаты задач этого проекта. Это тот же переключатель, который в старых версиях назывался Allow alerts for this project в настройках проекта.

Telegram появляется, как только на сервере есть токен бота, и остаётся серым, пока чат не задан. Нажмите на чип, чтобы ввести Telegram Chat ID этого проекта; он переопределяет общесерверный чат и обязателен, если на сервере чат не задан.

Серверные каналы сообщают обо всех значимых статусах: успех, ошибка и ожидание подтверждения. Электронная почта сообщает только об ошибках. Шаблон по-прежнему может подавлять уведомления об успехе или ошибке, см. Оповещения шаблона.

Карточка серверных каналов с открытым полем Telegram Chat ID

Оповещения проекта​

Меню «Новое оповещение»

Нажмите Новое оповещение, чтобы создать назначение. У каждого оповещения есть:

ПолеОписание
ИмяПоказывается в формах шаблонов и расписаний. Уникально в пределах проекта.
ТипКанал: Telegram, Slack, Email, Microsoft Teams, Rocket.Chat, DingTalk или Gotify. Форма показывает поля назначения, нужные каналу.
НазначениеID чата и необязательная тема форума для Telegram; URL вебхука для Slack, Teams, Rocket.Chat и DingTalk; URL сервера для Gotify; получатели для электронной почты (оставьте пустым, чтобы уведомлять участников проекта, включивших оповещения в профиле).
СекретTelegram, Gotify и электронной почте нужен секрет: токен бота, токен приложения, учётные данные SMTP. Использовать настройки сервера берёт его из конфигурации сервера; Использовать свои берёт его из ключа доступа в хранилище ключей (тип Секретный токен для токенов, Логин с паролем для SMTP). Оповещение по почте со своими учётными данными может также задать свой SMTP-сервер, порт, отправителя и шифрование.
Отправлять приСобытия, на которые реагирует оповещение: успех, ошибка, ожидание подтверждения. Новые оповещения начинают с значений по умолчанию для канала.
По умолчанию в проектеОтмечает оповещение как одно из умолчаний проекта. Его отправляет каждый шаблон, использующий настройки проекта по умолчанию.
ВключеноВыключенное оповещение никогда не отправляется и не является умолчанием проекта.
Шаблон сообщенияНеобязательный Go-шаблон тела сообщения. Оставьте встроенный текст, чтобы получать обновления вместе с сервером.

Секреты никогда не хранятся в оповещении: они лежат в зашифрованном виде в хранилище ключей, и ключ нельзя удалить, пока его использует оповещение. Если на сервере не настроены токен бота, SMTP-сервер или пара Gotify, форма предлагает только Использовать свои. URL вебхуков должны использовать http или https и не могут указывать на сам сервер.

Используйте Отправить тестовое сообщение в списке, чтобы проверить одно оповещение, и Проверить все на панели инструментов, чтобы отправить тест во все включённые назначения проекта, включая серверные каналы.

Оповещение, привязанное к шаблону или расписанию, удалить нельзя. Диалог показывает объекты, которые его используют.

Оповещение Telegram со своим токеном бота

Шаблоны сообщений​

Тело — это Go text/template (html/template для электронной почты). Доступные поля:

ПолеЗначение
.NameИмя шаблона
.AuthorИмя пользователя, запустившего задачу, либо —
.Project.Name, .Project.IDПроект
.PlaybookПлейбук или скрипт шаблона
.ScheduleNameИмя расписания, запустившего задачу, если есть
.Task.ID, .Task.URLНомер задачи и ссылка на её лог
.Task.ResultСтатус со значком, например ✅ SUCCESS
.Task.DescСообщение, введённое при запуске задачи
.Task.VersionВерсия сборки либо входящая версия сборки для задач развёртывания
.Task.DurationВремя выполнения, пусто до запуска задачи
.Task.Triggermanual, schedule, integration или api
.ColorЦвет вложения для Slack и Rocket.Chat

Для чат-каналов результат рендеринга должен быть JSON-документом, который ожидает мессенджер; встроенный шаблон — хорошая отправная точка. Тела для Telegram — обычный текст с HTML-форматированием, чат и тему добавляет Semaphore.

Оповещения шаблона​

В разделе Дополнительно шаблона задачи поле Оповещения предлагает выбор:

  • Использовать настройки проекта по умолчанию — серверные каналы, если они включены для проекта, плюс оповещения, отмеченные как умолчания проекта. Существующие шаблоны сохраняют это поведение после обновления.
  • Использовать свой набор оповещений — только выбранные оповещения. Пустой выбор означает, что шаблон ничего не отправляет.

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

Шаблон задачи со своим набором оповещений

Оповещения расписания​

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

Расписание со своим набором оповещений

Как маршрутизируется задача​

Назначения задачи фиксируются в момент её создания. Изменение оповещения, шаблона или расписания во время выполнения задачи не меняет того, куда она отчитывается. Каждая доставка записывается для пары задача–назначение и события, поэтому в конфигурации высокой доступности каждое сообщение отправляет только один узел сервера.

Резервные копии​

Оповещения проекта входят в резервную копию проекта. Шаблоны и расписания ссылаются на них по имени, поэтому восстановленный проект сохраняет привязки. Оповещения ссылаются на свой ключ доступа по имени; как и для любого ключа, само значение секрета не экспортируется.