Notify Release #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Notify Release | |
on: | |
workflow_run: | |
workflows: | |
- "changelog" # Name of the triggering workflow | |
types: | |
- completed | |
workflow_dispatch: # Allow manual triggering of this workflow | |
jobs: | |
notify: | |
#if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' | |
- name: Install jq | |
run: sudo apt-get install -y jq | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install requests jq | |
- name: Fetch Repository Tags | |
id: fetch_tags | |
run: | | |
curl -s "https://api.github.com/repos/RyanYuuki/AnymeX/tags" -o tags.json | |
TAGS=$(jq -r '.[].name' tags.json | sort -V) | |
LATEST_TAG=$(echo "$TAGS" | tail -n 1) | |
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV | |
- name: Use the Latest Tag | |
run: | | |
echo "The latest tag is: ${{ env.LATEST_TAG }}" | |
- name: Get Release Info | |
id: release_info | |
run: | | |
curl -s "https://api.github.com/repos/RyanYuuki/AnymeX/releases/tags/${{ env.LATEST_TAG }}" -o release.json | |
RELEASE_NAME=$(jq -r '.name // "No release name"' release.json) | |
RELEASE_NOTES=$(jq -r '.body // "No release notes"' release.json) | |
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV | |
# Write release notes as-is with newlines | |
echo -e "RELEASE_NOTES<<EOF\n$RELEASE_NOTES\nEOF" >> $GITHUB_ENV | |
- name: Get and Categorize Assets with Sizes | |
id: categorize_assets | |
run: | | |
# Fetch release assets based on the latest tag | |
curl -s "https://api.github.com/repos/RyanYuuki/AnymeX/releases/tags/${{ env.LATEST_TAG }}" -o release.json | |
# Initialize environment variables | |
for VAR in apk_arm64 apk_armeabi apk_universal apk_x86_64 windows linux ios setup macos; do | |
echo "${VAR}_message=" >> $GITHUB_ENV | |
done | |
# Process each asset | |
jq -r '.assets[] | "\(.browser_download_url) \(.size)"' release.json | while read -r LINE; do | |
ASSET_URL=$(echo "$LINE" | awk '{print $1}') | |
ASSET_SIZE=$(echo "$LINE" | awk '{print $2}') | |
SIZE_HR=$(awk -v size="$ASSET_SIZE" 'BEGIN{ | |
split("B KB MB GB TB", unit); | |
for (i=1; size>=1024 && i<5; i++) size/=1024; | |
printf "%.2f %s", size, unit[i] | |
}') | |
FILE_NAME=$(basename "$ASSET_URL") | |
# Categorize and set variables | |
if [[ "$FILE_NAME" == *"-arm64.apk" ]]; then | |
echo "apk_arm64_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"-armeabi-v7a.apk" ]]; then | |
echo "apk_armeabi_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"-universal.apk" ]]; then | |
echo "apk_universal_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"-x86_64.apk" ]]; then | |
echo "apk_x86_64_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *.ipa ]]; then | |
echo "ios_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"Linux.zip" ]]; then | |
echo "linux_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"Setup.exe" ]]; then | |
echo "setup_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *"Windows.zip" ]]; then | |
echo "windows_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
elif [[ "$FILE_NAME" == *".dmg" ]]; then | |
echo "macos_message=$SIZE_HR | [Download]($ASSET_URL)" >> $GITHUB_ENV | |
fi | |
done | |
- name: Determine Webhook | |
id: determine_webhook | |
run: | | |
if [[ "${RELEASE_NAME}" == *alpha ]]; then | |
echo "DISCORD_WEBHOOK_URL=${{ secrets.DISCORD_WEBHOOK_ALPHA }}" >> $GITHUB_ENV | |
else | |
echo "DISCORD_WEBHOOK_URL=${{ secrets.DISCORD_WEBHOOK_BETA }}" >> $GITHUB_ENV | |
fi | |
- name: Determine Topic | |
id: determine_topic | |
run: | | |
if [[ "${RELEASE_NAME}" == *alpha ]]; then | |
echo "TELEGRAM_THREAD_ID=17602" >> $GITHUB_ENV | |
else | |
echo "TELEGRAM_THREAD_ID=17665" >> $GITHUB_ENV | |
fi | |
- name: Send Release Notes to Telegram | |
run: | | |
# Assuming RELEASE_NOTES contains your original content | |
tel_commit="${RELEASE_NOTES}" | |
# Replace ### with ** | |
tel_commit=$(echo "$tel_commit" | sed 's/^### /**/g') | |
# Replace * with 🔹 (excluding headings) | |
tel_commit=$(echo "$tel_commit" | sed 's/^* /🔹 /g') | |
# Replace ): with ) | |
tel_commit=$(echo "$tel_commit" | sed -E 's/\): [^:]+:/) :/g') | |
# Display or use the modified text | |
echo "$tel_commit" | |
MESSAGE=" **🚀 New Release: ${RELEASE_NAME} ** | |
Release Notes: $tel_commit" | |
curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \ | |
-H "Content-Type: application/json" \ | |
-d '{ | |
"chat_id": "${{ secrets.TELEGRAM_CHAT_ID }}", | |
"message_thread_id": "${{ env.TELEGRAM_THREAD_ID }}", | |
"text": "'"$MESSAGE"'", | |
"parse_mode": "Markdown" | |
}' | |
- name: Send Assets to Telegram | |
run: | | |
MESSAGE="🎉 *${{ env.LATEST_TAG }} Released* 🎉 | |
🔹 ${{ env.apk_arm64_message }} : **APK (arm64)** | |
🔹 ${{ env.apk_armeabi_message }} : **APK (armeabi-v7a)** | |
🔹 ${{ env.apk_universal_message }} : **APK (universal)** | |
🔹 ${{ env.apk_x86_64_message }} : **APK (x86 & x64)** | |
🔹 ${{ env.windows_message }} : **Windows Zip** | |
🔹 ${{ env.setup_message }} : **Windows EXE** | |
🔹 ${{ env.linux_message }} : **Linux** | |
🔹 ${{ env.ios_message }} : **iOS** | |
🔹 ${{ env.macos_message }} : **macOS**" | |
curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \ | |
-H "Content-Type: application/json" \ | |
-d '{ | |
"chat_id": "${{ secrets.TELEGRAM_CHAT_ID }}", | |
"message_thread_id": "${{ env.TELEGRAM_THREAD_ID }}", | |
"text": "'"$MESSAGE"'", | |
"parse_mode": "Markdown" | |
}' | |
- name: Send Release Notes to Discord | |
run: | | |
# Replace ): with ) | |
discord_commit=$(echo "$RELEASE_NOTES" | sed -E 's/\): [^:]+:/) :/g') | |
# Mention the role based on environment | |
if [[ "${RELEASE_NAME}" == *alpha ]]; then | |
ROLE_MENTION="<@&1313089691523878942>" # Use the actual Role ID for alpha channel | |
elif [[ "${RELEASE_NAME}" == *beta ]]; then | |
ROLE_MENTION="<@&1313087262539518033>" # Use the actual Role ID for beta channel | |
else | |
ROLE_MENTION="<@&1313346791479054456>" # Use the default role ID | |
fi | |
PAYLOAD=$(jq -n \ | |
--arg content "${ROLE_MENTION}" \ | |
--arg title "🚀 New Release: $RELEASE_NAME" \ | |
--arg description "$discord_commit" \ | |
--argjson color 5814783 \ | |
'{ content: $content, embeds: [{ title: $title, description: $description, color: $color }] }') | |
curl -X POST "${{ env.DISCORD_WEBHOOK_URL }}" \ | |
-H "Content-Type: application/json" \ | |
-d "$PAYLOAD" | |
- name: Send Assets to Discord | |
run: | | |
MESSAGE="## ${{ env.LATEST_TAG }} Released | |
🔹 ${{ env.apk_arm64_message }} : **APK (arm64)** | |
🔹 ${{ env.apk_armeabi_message }} : **APK (armeabi-v7a)** | |
🔹 ${{ env.apk_universal_message }} : **APK (universal)** | |
🔹 ${{ env.apk_x86_64_message }} : **APK (x86 & x64)** | |
🔹 ${{ env.windows_message }} : **Windows Zip** | |
🔹 ${{ env.setup_message }} : **Windows EXE** | |
🔹 ${{ env.linux_message }} : **Linux** | |
🔹 ${{ env.ios_message }} : **iOS** | |
🔹 ${{ env.macos_message }} : **macOS**" | |
PAYLOAD=$(jq -n --arg content "$MESSAGE" '{ content: $content }') | |
curl -X POST "${{ env.DISCORD_WEBHOOK_URL }}" \ | |
-H "Content-Type: application/json" \ | |
-d "$PAYLOAD" |