Skip to content

Commit c595bde

Browse files
committed
feat: Add mention_everyone input to workflow dispatch & fix windows installer asset not available
1 parent 135ede4 commit c595bde

File tree

2 files changed

+96
-238
lines changed

2 files changed

+96
-238
lines changed

.github/workflows/Notify.yml

Lines changed: 37 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,75 +5,57 @@ on:
55
workflows: ["Release Build"]
66
types: [completed]
77
workflow_dispatch:
8+
inputs:
9+
mention_everyone:
10+
description: "Ping @everyone on Discord?"
11+
required: false
12+
default: false
13+
type: boolean
814

915
jobs:
1016
notify:
1117
runs-on: ubuntu-latest
1218
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
19+
1320
steps:
14-
- name: Fetch Latest Tag and Release Notes
21+
- name: Fetch Release Data
22+
id: fetch_data
1523
run: |
16-
LATEST_TAG=$(curl -s "https://api.github.com/repos/${{github.repository}}/tags" | jq -r '.[0].name')
17-
RELEASE_DATA=$(curl -s "https://api.github.com/repos/${{github.repository}}/releases/tags/$LATEST_TAG")
24+
RELEASE_DATA=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
25+
"https://api.github.com/repos/${{github.repository}}/releases" | jq '.[0]')
26+
27+
TAG=$(echo "$RELEASE_DATA" | jq -r '.tag_name')
28+
echo "tag=$TAG" >> $GITHUB_OUTPUT
1829
1930
echo "$RELEASE_DATA" | jq -r '.body' > release_notes.txt
20-
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
31+
echo "$RELEASE_DATA" > release.json
2132
22-
- name: Get and Categorize Assets
23-
id: categorize
33+
- name: Categorize Assets
2434
run: |
25-
curl -s "https://api.github.com/repos/${{github.repository}}/releases/tags/${{ env.LATEST_TAG }}" -o release.json
26-
27-
jq -r '.assets[] | "\(.browser_download_url) \(.size)"' release.json | while read -r URL SIZE; do
28-
NAME=$(basename "$URL")
29-
SIZE_HR=$(awk -v s="$SIZE" 'BEGIN{split("B KB MB GB",u); for(i=1;s>=1024&&i<4;i++)s/=1024; printf "%.2f %s",s,u[i]}')
30-
31-
if [[ "$NAME" == *"arm64-v8a"* ]]; then echo "APK_ARM64=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
32-
elif [[ "$NAME" == *"armeabi-v7a"* ]]; then echo "APK_V7A=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
33-
elif [[ "$NAME" == *"x86_64"* ]]; then echo "APK_X64=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
34-
elif [[ "$NAME" == *"-Setup.exe" ]]; then echo "WIN_EXE=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
35-
elif [[ "$NAME" == *"Windows-Portable.zip" ]]; then echo "WIN_ZIP=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
36-
elif [[ "$NAME" == *"Linux.zip" ]]; then echo "LINUX_ZIP=[Download]($URL) | $SIZE_HR" >> $GITHUB_ENV
37-
fi
38-
done
35+
jq -r '.assets[] | "🔹 [\(.name)](\(.browser_download_url)) | \((.size/1048576) | tonumber | round) MB"' release.json > asset_list.txt
3936
40-
- name: Send Discord Embed
37+
- name: Send Discord Notification
4138
env:
4239
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
40+
MENTION: ${{ github.event.inputs.mention_everyone == 'true' && '@everyone' || '' }}
41+
TAG: ${{ steps.fetch_data.outputs.tag }}
4342
run: |
44-
NOTES=$(cat release_notes.txt | sed 's/||//g')
45-
46-
# Mention @everyone or specific roles
47-
MENTION="@everyone"
48-
49-
# Embed Data
50-
PAYLOAD=$(jq -nc \
51-
--arg mention "$MENTION" \
52-
--arg title "🚀 New Release: ${{ env.LATEST_TAG }}" \
53-
--arg desc "$NOTES" \
54-
--arg color "1754309" \
55-
'{
56-
content: $mention,
57-
embeds: [{
58-
title: $title,
59-
description: $desc,
60-
color: ($color | tonumber),
61-
timestamp: (now | strftime("%Y-%m-%dT%H:%M:%SZ"))
62-
}]
63-
}')
64-
65-
curl -H "Content-Type: application/json" -d "$PAYLOAD" "$DISCORD_WEBHOOK"
43+
NOTES=$(cat release_notes.txt)
44+
ASSETS=$(cat asset_list.txt)
45+
FULL_DESC=$(printf "### Changelog\n%s\n\n### Downloads\n%s" "$NOTES" "$ASSETS")
6646
67-
- name: Send Discord Asset Links
68-
env:
69-
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
70-
run: |
71-
MSG="📦 **Assets for ${{ env.LATEST_TAG }}**"$'\n'
72-
[ -n "$WIN_EXE" ] && MSG="${MSG}🔹 **Windows Setup:** $WIN_EXE"$'\n'
73-
[ -n "$WIN_ZIP" ] && MSG="${MSG}🔹 **Windows Portable:** $WIN_ZIP"$'\n'
74-
[ -n "$LINUX_ZIP" ] && MSG="${MSG}🔹 **Linux Zip:** $LINUX_ZIP"$'\n'
75-
[ -n "$APK_ARM64" ] && MSG="${MSG}🔹 **Android arm64:** $APK_ARM64"$'\n'
76-
[ -n "$APK_V7A" ] && MSG="${MSG}🔹 **Android v7a:** $APK_V7A"$'\n'
47+
cat <<EOF > discord_payload.json
48+
{
49+
"content": "$MENTION",
50+
"embeds": [{
51+
"title": "🚀 New Release: $TAG",
52+
"description": "",
53+
"color": 1754309,
54+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
55+
}]
56+
}
57+
EOF
58+
59+
jq --arg desc "$FULL_DESC" '.embeds[0].description = $desc' discord_payload.json > final_payload.json
7760
78-
PAYLOAD=$(jq -n --arg content "$MSG" '{content: $content}')
79-
curl -H "Content-Type: application/json" -d "$PAYLOAD" "$DISCORD_WEBHOOK"
61+
curl -H "Content-Type: application/json" -X POST -d @final_payload.json "$DISCORD_WEBHOOK"

0 commit comments

Comments
 (0)