Update beta.yml #1
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: Build APK and Notify Discord | |
on: | |
workflow_dispatch: | |
branches: | |
- main | |
paths-ignore: | |
- '**/README.md' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
CI: true | |
SKIP_BUILDING_APK: false | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Download last SHA artifact | |
uses: dawidd6/action-download-artifact@v3 | |
with: | |
workflow: beta.yml | |
name: last-sha | |
path: . | |
continue-on-error: true | |
- name: Get Commits Since Last Run | |
run: | | |
if [ -f last_sha.txt ]; then | |
LAST_SHA=$(cat last_sha.txt) | |
else | |
LAST_SHA=$(git rev-list --max-parents=0 HEAD) | |
fi | |
echo "Commits since $LAST_SHA:" | |
COMMIT_LOGS=$(git log $LAST_SHA..HEAD --pretty=format:"● %s ~%an [֍](https://github.com/${{ github.repository }}/commit/%H)") | |
COMMIT_LOGS=$(echo "$COMMIT_LOGS" | sed -E 's/#([0-9]+)/[#\1](https:\/\/github.com\/rebelonion\/Dantotsu\/pull\/\1)/g') | |
COMMIT_LOGS="${COMMIT_LOGS//'%'/'%25'}" | |
COMMIT_LOGS="${COMMIT_LOGS//$'\n'/'%0A'}" | |
COMMIT_LOGS="${COMMIT_LOGS//$'\r'/'%0D'}" | |
echo "COMMIT_LOG=${COMMIT_LOGS}" >> $GITHUB_ENV | |
echo "$COMMIT_LOGS" | |
echo "$COMMIT_LOGS" > commit_log.txt | |
shell: /usr/bin/bash -e {0} | |
env: | |
CI: true | |
continue-on-error: true | |
- name: Save Current SHA for Next Run | |
run: echo ${{ github.sha }} > last_sha.txt | |
- name: Set variables | |
run: | | |
VER=$(grep -E -o "versionName \".*\"" app/build.gradle | sed -e 's/versionName //g' | tr -d '"') | |
SHA=${{ github.sha }} | |
VERSION="$VER+${SHA:0:7}" | |
echo "Version $VERSION" | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Setup JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
cache: gradle | |
- name: List files in the directory | |
run: ls -l | |
- name: Make gradlew executable | |
run: chmod +x ./gradlew | |
- name: Build with Gradle | |
if: ${{ env.SKIP_BUILDING_APK != 'true' }} | |
run: ./gradlew assembleGoogleAlpha | |
- name: Upload a Build Artifact | |
if: ${{ env.SKIP_BUILDING_APK != 'true' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Dantotsu | |
retention-days: 5 | |
compression-level: 9 | |
path: "app/build/outputs/apk/google/alpha/app-google-alpha.apk" | |
- name: Upload APK to Discord and Telegram | |
shell: bash | |
run: | | |
fetch_user_details() { | |
local login=$1 | |
user_details=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
"https://api.github.com/users/$login") | |
name=$(echo "$user_details" | jq -r '.name // .login') | |
login=$(echo "$user_details" | jq -r '.login') | |
avatar_url=$(echo "$user_details" | jq -r '.avatar_url') | |
echo "$name|$login|$avatar_url" | |
} | |
declare -A additional_info | |
additional_info["ibo"]="\n Discord: <@951737931159187457>\n AniList: [takarealist112](<https://anilist.co/user/takarealist112/>)" | |
additional_info["aayush262"]="\n Discord: <@918825160654598224>\n AniList: [aayush262](<https://anilist.co/user/aayush262/>)" | |
additional_info["rebelonion"]="\n Discord: <@714249925248024617>\n AniList: [rebelonion](<https://anilist.co/user/rebelonion/>)\n PornHub: [rebelonion](<https://www.cornhub.com/model/rebelonion>)" | |
declare -A recent_commit_counts | |
while read -r count name; do | |
recent_commit_counts["$name"]=$count | |
done < <(echo "$COMMIT_LOG" | sed 's/%0A/\n/g' | grep -oP '(?<=~)[^[]*' | sort | uniq -c | sort -rn) | |
contributors=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
"https://api.github.com/repos/Dantotsu-inc/FUCKYML/contributors") | |
sorted_contributors=$(for login in $(echo "$contributors" | jq -r '.[].login'); do | |
user_info=$(fetch_user_details "$login") | |
name=$(echo "$user_info" | cut -d'|' -f1) | |
count=${recent_commit_counts["$name"]:-0} | |
echo "$count|$login" | |
done | sort -rn | cut -d'|' -f2) | |
developers="" | |
committers_count=0 | |
max_commits=0 | |
top_contributor="" | |
top_contributor_count=0 | |
top_contributor_avatar="" | |
while read -r login; do | |
user_info=$(fetch_user_details "$login") | |
name=$(echo "$user_info" | cut -d'|' -f1) | |
login=$(echo "$user_info" | cut -d'|' -f2) | |
avatar_url=$(echo "$user_info" | cut -d'|' -f3) | |
commit_count=${recent_commit_counts["$name"]:-0} | |
if [ $commit_count -gt 0 ]; then | |
if [ $commit_count -gt $max_commits ]; then | |
max_commits=$commit_count | |
top_contributor="$login" | |
top_contributor_count=1 | |
top_contributor_avatar="$avatar_url" | |
elif [ $commit_count -eq $max_commits ]; then | |
top_contributor_count=$((top_contributor_count + 1)) | |
fi | |
branch_commit_count=$(git rev-list --count dev --author="$login") | |
extra_info="${additional_info[$name]}" | |
if [ -n "$extra_info" ]; then | |
extra_info=$(echo "$extra_info" | sed 's/\\n/\n- /g') | |
fi | |
developer_entry="◗ **${name}** ${extra_info} | |
- Github: [${login}](https://github.com/${login}) | |
- Commits: ${branch_commit_count}" | |
if [ -n "$developers" ]; then | |
developers="${developers} | |
${developer_entry}" | |
else | |
developers="${developer_entry}" | |
fi | |
committers_count=$((committers_count + 1)) | |
fi | |
done <<< "$sorted_contributors" | |
if [ $top_contributor_count -eq 1 ]; then | |
thumbnail_url="$top_contributor_avatar" | |
else | |
thumbnail_url="https://i.imgur.com/5o3Y9Jb.gif" | |
fi | |
max_length=1000 | |
commit_messages=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g; s/^/\n/') | |
if [ ${#developers} -gt $max_length ]; then | |
developers="${developers:0:$max_length}... (truncated)" | |
fi | |
if [ ${#commit_messages} -gt $max_length ]; then | |
commit_messages="${commit_messages:0:$max_length}... (truncated)" | |
fi | |
discord_data=$(jq -nc \ | |
--arg field_value "$commit_messages" \ | |
--arg author_value "$developers" \ | |
--arg footer_text "Version $VERSION" \ | |
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \ | |
--arg thumbnail_url "$thumbnail_url" \ | |
'{ | |
"content": "<@&1225347048321191996>", | |
"embeds": [ | |
{ | |
"title": "New Alpha-Build dropped", | |
"color": 15532323, | |
"fields": [ | |
{ | |
"name": "Commits:", | |
"value": $field_value, | |
"inline": true | |
}, | |
{ | |
"name": "Developers:", | |
"value": $author_value, | |
"inline": false | |
} | |
], | |
"footer": { | |
"text": $footer_text | |
}, | |
"timestamp": $timestamp, | |
"thumbnail": { | |
"url": $thumbnail_url | |
} | |
} | |
], | |
"attachments": [] | |
}') | |
curl -H "Content-Type: application/json" \ | |
-d "$discord_data" \ | |
${{ secrets.DISCORD_WEBHOOK }} | |
if [ "$SKIP_BUILDING_APK" != "true" ]; then | |
curl -F "payload_json=${contentbody}" \ | |
-F "dantotsu_debug=@app/build/outputs/apk/google/alpha/app-google-alpha.apk" \ | |
${{ secrets.DISCORD_WEBHOOK }} | |
else | |
echo "Skipping APK upload to Discord due to SKIP_BUILDING_APK being set to true" | |
fi | |
telegram_commit_messages=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g' | while read -r line; do | |
message=$(echo "$line" | sed -E 's/● (.*) ~(.*) \[֍\]\((.*)\)/● \1 ~\2 [֍](\3)/') | |
message=$(echo "$message" | sed -E 's/\[#([0-9]+)\]\((https:\/\/github\.com\/[^)]+)\)/[#\1](\2)/g') | |
echo "$message" | |
done) | |
telegram_data=$(jq -nc \ | |
--arg field_value "$telegram_commit_messages" \ | |
--arg author_value "$developers" \ | |
--arg footer_text "Version $VERSION" \ | |
'{ | |
"chat_id": ${-1002175153539}, | |
"caption": "New Alpha-Build dropped 🔥\n\nCommits:\n$field_value\n\nDevelopers:\n$author_value\n\nVersion: $footer_text", | |
"parse_mode": "Markdown" | |
}') | |
if [ "$SKIP_BUILDING_APK" != "true" ]; then | |
APK_PATH="app/build/outputs/apk/google/alpha/app-google-alpha.apk" | |
curl -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \ | |
-F "caption=Alpha-Build: ${VERSION}\n\nCommits:\n${telegram_commit_messages}\n\nDevelopers:\n${developers}" \ | |
-F "parse_mode=Markdown" \ | |
-F "document=@$APK_PATH" \ | |
https://api.telegram.org/bot${7038245661:AAGFQBXtaBmEflFWJw-KVHGBPmYkShCq_rY}/sendDocument | |
else | |
echo "Skipping Telegram message and APK upload due to SKIP_BUILDING_APK being set to true" | |
fi | |
env: | |
COMMIT_LOG: ${{ env.COMMIT_LOG }} | |
VERSION: ${{ env.VERSION }} | |
- name: Upload Current SHA as Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: last-sha | |
path: last_sha.txt | |
- name: Upload Commit log as Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: commit-log | |
path: commit_log.txt |