mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
feat: автопубликация телеграм анонса при релизе
This commit is contained in:
@@ -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/&/\&/g; s/</\</g; s/>/\>/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")"
|
||||
|
||||
Reference in New Issue
Block a user