notiflow – уведомления о CI в Telegram

Привет, %username%! Знакомая ситуация: пушнул, закрыл ноут, пошёл за кофе. А через двадцать минут выясняется, что pipeline покраснел ещё на первом шаге, и всё это время ты об этом не знал. Сидеть и тупить во вкладку Actions неохота, а почтовые уведомления GitHub я давно отправил в архив: их слишком много, и читать это невозможно.

Хотелось простого: чтобы по завершении джобы в Telegram падало короткое сообщение со статусом. Готовых экшенов хватает, но мне в них всё время чего-то не хватало: то нормальных шаблонов под статусы, то вменяемого поведения при рейт-лимитах. Так и собрал своё — notiflow.

Это composite GitHub Action на чистом bash + curl + jq, без докер-образа и без Node. Подключается одним шагом:

notify: needs: build if: always() runs-on: ubuntu-latest steps:

  • uses: jtprogru/notiflow@v1 with: bot_token: ${{ secrets.TELEGRAM_BOT_TOKEN }} chat_id: ${{ secrets.TELEGRAM_CHAT_ID }} status: ${{ needs.build.result }}

И всё. В чат прилетает сообщение с эмодзи статуса, названием workflow, репозиторием, веткой, коротким SHA и ссылкой на run.

Что внутри, если коротко:

  • Шаблоны под каждый статус. template_success, template_failure и так далее, с плейсхолдерами {{.Repo}}, {{.Branch}}, {{.RunUrl}}. Пишешь свой формат, а экранирование под parse_mode экшен берёт на себя.
  • Fan-out на несколько чатов. В chat_id кидаешь список через запятую: личка, канал, отдельный чат для алертов. При частичном фейле в error видно, какой именно чат отвалился.
  • Редактирование сообщения. Можно отправить ⏳ Build started, а в конце по edit_message_id переписать его на ✅ Build done. Вместо двух сообщений одно живое.
  • Тихая доставка и треды форума. disable_notification и message_thread_id, чтобы не будить людей по ночам и не засорять общий чат.
  • Ретраи по-человечески. На 429 уважается retry_after из ответа Telegram, на 5xx — экспоненциальный backoff. По умолчанию доставка не валит весь job (fail_on_error: false): уведомление это side-channel, а не часть сборки.

Репозиторий тут: https://github.com/jtprogru/notiflow

Тег v1 — плавающий мажорный, всегда смотрит на свежий v1.x.y. Нужна воспроизводимость — пинь конкретную версию вроде v1.2.3. Лицензия MIT, делай с ним что хочешь.

Если попробуешь у себя — расскажи, чего не хватает: самый честный roadmap пишется из чужих issue. Го в комменты: чем уведомляещь о статусе CI — Telegram, Slack, почта, или вообще забил?

ЗЫЖ На картинке как раз алерты о том, что мой блог обновился успешно!

#SRE #DevOps #Github #GithubActions #notiflow #Automations #Alerting

notiflow – уведомления о CI в Telegram
Привет, %username%! Знакомая ситуация: пушнул, закрыл ноут, пошёл за кофе | Сетка — социальная сеть от hh.ru