feat: автопубликация телеграм анонса при релизе

This commit is contained in:
samosvalishe
2026-07-13 22:31:06 +03:00
parent e5874e3c30
commit e678ee1fd8
+36
View File
@@ -129,3 +129,39 @@ jobs:
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
notify-telegram:
name: Telegram announce
runs-on: ubuntu-latest
needs: goreleaser
steps:
- name: Send release message
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: |
BODY=$(gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" --json body -q .body | head -c 3000)
URL=$(gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" --json url -q .url)
# GH-markdown -> Telegram-HTML: сначала экранируем HTML, потом размечаем.
# Хвосты "by @user in <PR-url>" из авто-нотов убираем - в посте это шум.
HTML=$(printf '%s' "$BODY" \
| sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g' \
| sed -E \
-e 's| by @[[:alnum:]_-]+ in https://[^[:space:]]+||g' \
-e 's|\[([^]]+)\]\((https?://[^)]+)\)|<a href="\2">\1</a>|g' \
-e 's|\*\*([^*]+)\*\*|<b>\1</b>|g' \
-e 's|`([^`]+)`|<code>\1</code>|g' \
-e 's|^#{1,6}[[:space:]]+(.*)$|<b>\1</b>|' \
-e 's|^[-*][[:space:]]+|• |')
TEXT=$(printf '🚀 <b>FreeTurn %s</b>\n\n%s\n\n<a href="%s">Релиз на GitHub</a>' "$GITHUB_REF_NAME" "$HTML" "$URL")
send() {
curl -fsS -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
--data-urlencode "chat_id=${CHAT_ID}" \
--data-urlencode "text=$1" \
--data-urlencode "parse_mode=${2:-}" \
--data-urlencode "disable_web_page_preview=true" \
-o /dev/null
}
# Кривой HTML роняет весь sendMessage - фолбэк plain text, чтобы анонс не пропал
send "$TEXT" HTML || send "$(printf '🚀 FreeTurn %s\n\n%s\n\n%s' "$GITHUB_REF_NAME" "$BODY" "$URL")"