mirror of
https://github.com/wgtunnel/android.git
synced 2026-06-02 00:29:08 +02:00
ci: add telegram and matrix bot notifications
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
name: Send Notifications to Telegram and Matrix
|
||||
name: notifications
|
||||
|
||||
on:
|
||||
issues:
|
||||
@@ -11,24 +11,63 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Send to Telegram
|
||||
env:
|
||||
MESSAGE: |
|
||||
${{ github.event_name == 'issues' && github.event.action == 'opened' && format('🆕 New Issue #%s: *%s* by %s\n\n%s\n\n[View Issue](%s)', github.event.issue.number, github.event.issue.title, github.event.issue.user.login, (github.event.issue.body || 'No body provided')[:200], github.event.issue.html_url) ||
|
||||
github.event_name == 'issues' && github.event.action == 'closed' && format('✅ Issue Closed #%s: *%s* by %s\n\n[View Issue](%s)', github.event.issue.number, github.event.issue.title, github.event.issue.user.login, github.event.issue.html_url) ||
|
||||
github.event_name == 'release' && github.event.action == 'published' && format('🚀 New Release *%s* (%s)\n\n%s\n\n[View Release](%s)', github.event.release.name, github.event.release.tag_name, (github.event.release.body || 'No notes provided')[:200], github.event.release.html_url) }}
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "issues" && "${{ github.event.action }}" == "opened" ]]; then
|
||||
TITLE="${{ github.event.issue.title }}"
|
||||
NUMBER=${{ github.event.issue.number }}
|
||||
USER="${{ github.event.issue.user.login }}"
|
||||
BODY="${{ github.event.issue.body || 'No body provided' }}"
|
||||
BODY_TRUNC="${BODY:0:200}" # Truncate to avoid spam
|
||||
URL="${{ github.event.issue.html_url }}"
|
||||
TEXT=$(echo -e "🆕 New Issue #$NUMBER: *$TITLE* by $USER\n\n$BODY_TRUNC\n\n[View Issue]($URL)")
|
||||
elif [[ "${{ github.event_name }}" == "issues" && "${{ github.event.action }}" == "closed" ]]; then
|
||||
TITLE="${{ github.event.issue.title }}"
|
||||
NUMBER=${{ github.event.issue.number }}
|
||||
USER="${{ github.event.issue.user.login }}"
|
||||
URL="${{ github.event.issue.html_url }}"
|
||||
TEXT=$(echo -e "✅ Issue Closed #$NUMBER: *$TITLE* by $USER\n\n[View Issue]($URL)")
|
||||
elif [[ "${{ github.event_name }}" == "release" && "${{ github.event.action }}" == "published" ]]; then
|
||||
NAME="${{ github.event.release.name }}"
|
||||
TAG="${{ github.event.release.tag_name }}"
|
||||
BODY="${{ github.event.release.body || 'No notes provided' }}"
|
||||
BODY_TRUNC="${BODY:0:200}" # Truncate to avoid spam
|
||||
URL="${{ github.event.release.html_url }}"
|
||||
TEXT=$(echo -e "🚀 New Release *$NAME* ($TAG)\n\n$BODY_TRUNC\n\n[View Release]($URL)")
|
||||
fi
|
||||
|
||||
curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendMessage" \
|
||||
-d chat_id="${{ vars.TELEGRAM_CHAT_ID }}" \
|
||||
${{ vars.TELEGRAM_THREAD_ID && format('-d message_thread_id=\"%s\"', vars.TELEGRAM_THREAD_ID) || '' }} \
|
||||
${{ vars.TELEGRAM_THREAD_ID && format('-d message_thread_id="{0}"', vars.TELEGRAM_THREAD_ID) || '' }} \
|
||||
-d parse_mode="Markdown" \
|
||||
-d text="$MESSAGE"
|
||||
--data-urlencode "text=$TEXT"
|
||||
|
||||
- name: Send to Matrix
|
||||
uses: s3krit/matrix-message-action@v0.0.3
|
||||
with:
|
||||
room_id: ${{ vars.MATRIX_ROOM_ID }}
|
||||
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
|
||||
server: ${{ vars.MATRIX_HOMESERVER }}
|
||||
message: |
|
||||
${{ github.event_name == 'issues' && github.event.action == 'opened' && format('🆕 New Issue #{0}: **{1}** by {2}\n\n{3}\n\n[View Issue]({4})', github.event.issue.number, github.event.issue.title, github.event.issue.user.login, (github.event.issue.body || 'No body provided')[:200], github.event.issue.html_url) ||
|
||||
github.event_name == 'issues' && github.event.action == 'closed' && format('✅ Issue Closed #{0}: **{1}** by {2}\n\n[View Issue]({3})', github.event.issue.number, github.event.issue.title, github.event.issue.user.login, github.event.issue.html_url) ||
|
||||
github.event_name == 'release' && github.event.action == 'published' && format('🚀 New Release **{0}** ({1})\n\n{2}\n\n[View Release]({3})', github.event.release.name, github.event.release.tag_name, (github.event.release.body || 'No notes provided')[:200], github.event.release.html_url) }}
|
||||
run: |
|
||||
PLAIN_MESSAGE=""
|
||||
HTML_MESSAGE=""
|
||||
if [[ "${{ github.event_name }}" == "issues" && "${{ github.event.action }}" == "opened" ]]; then
|
||||
PLAIN_MESSAGE=$(echo -e "🆕 New Issue #${{ github.event.issue.number }}: ${{ github.event.issue.title }} by ${{ github.event.issue.user.login }}\n\n${{ github.event.issue.body || 'No body provided' }}\n\nView Issue: ${{ github.event.issue.html_url }}")
|
||||
HTML_MESSAGE=$(echo -e "<p>🆕 New Issue #${{ github.event.issue.number }}: <strong>${{ github.event.issue.title }}</strong> by ${{ github.event.issue.user.login }}</p><p>${{ github.event.issue.body || 'No body provided' }}</p><p><a href=\"${{ github.event.issue.html_url }}\">View Issue</a></p>")
|
||||
elif [[ "${{ github.event_name }}" == "issues" && "${{ github.event.action }}" == "closed" ]]; then
|
||||
PLAIN_MESSAGE=$(echo -e "✅ Issue Closed #${{ github.event.issue.number }}: ${{ github.event.issue.title }} by ${{ github.event.issue.user.login }}\n\nView Issue: ${{ github.event.issue.html_url }}")
|
||||
HTML_MESSAGE=$(echo -e "<p>✅ Issue Closed #${{ github.event.issue.number }}: <strong>${{ github.event.issue.title }}</strong> by ${{ github.event.issue.user.login }}</p><p><a href=\"${{ github.event.issue.html_url }}\">View Issue</a></p>")
|
||||
elif [[ "${{ github.event_name }}" == "release" && "${{ github.event.action }}" == "published" ]]; then
|
||||
PLAIN_MESSAGE=$(echo -e "🚀 New Release ${{ github.event.release.name }} (${{ github.event.release.tag_name }})\n\n${{ github.event.release.body || 'No notes provided' }}\n\nView Release: ${{ github.event.release.html_url }}")
|
||||
HTML_MESSAGE=$(echo -e "<p>🚀 New Release <strong>${{ github.event.release.name }}</strong> (${{ github.event.release.tag_name }})</p><p>${{ github.event.release.body || 'No notes provided' }}</p><p><a href=\"${{ github.event.release.html_url }}\">View Release</a></p>")
|
||||
fi
|
||||
|
||||
PLAIN_MESSAGE="${PLAIN_MESSAGE:0:220}"
|
||||
|
||||
PAYLOAD=$(jq -n --arg body "$PLAIN_MESSAGE" --arg formatted "$HTML_MESSAGE" '{
|
||||
"msgtype": "m.text",
|
||||
"body": $body,
|
||||
"format": "org.matrix.custom.html",
|
||||
"formatted_body": $formatted
|
||||
}')
|
||||
|
||||
TXN_ID="${{ github.run_id }}-${{ github.run_attempt }}"
|
||||
|
||||
curl -s -X PUT "https://${{ vars.MATRIX_HOMESERVER }}/_matrix/client/v3/rooms/${{ vars.MATRIX_ROOM_ID }}/send/m.room.message/$TXN_ID" \
|
||||
-H "Authorization: Bearer ${{ secrets.MATRIX_ACCESS_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$PAYLOAD"
|
||||
|
||||
Reference in New Issue
Block a user