@@ -582,60 +582,16 @@ jobs:
582582
583583 echo "FIREBASE_CONSOLE_URL=$FIREBASE_URL" >> $GITHUB_OUTPUT
584584
585- - name : Set up SSH key
585+ - name : Install uv
586+ uses : astral-sh/setup-uv@v6
587+
588+ - name : Upload APK to Cloudflare R2
586589 env :
587- GREENGEEKS_HOST : ${{ vars.GREENGEEKS_SSH_HOST }}
588- GREENGEEKS_KEY : ${{ secrets.GREENGEEKS_SSH_PRIVATE_KEY }}
589- GREENGEEKS_USER : ${{ vars.GREENGEEKS_SSH_USER }}
590+ CLOUDFLARE_ACCOUNT_ID : ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
591+ CLOUDFLARE_KEY_ID : ${{ vars.CLOUDFLARE_KEY_ID }}
592+ CLOUDFLARE_SECRET_ACCESS_KEY : ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
590593 run : |
591- mkdir -p ~/.ssh
592- if [ -z "$GREENGEEKS_HOST" ]; then
593- echo "Error: SSH_HOST variable is not set"
594- exit 1
595- fi
596- # Write the SSH key, ensuring proper formatting
597- echo "$GREENGEEKS_KEY" > ~/.ssh/id_rsa
598- # Remove any trailing newlines and ensure proper key format
599- sed -i '' -e '$ { /^$/ d; }' ~/.ssh/id_rsa 2>/dev/null || sed -i '$ { /^$/ d; }' ~/.ssh/id_rsa
600- chmod 600 ~/.ssh/id_rsa
601- # Verify key format
602- if ! grep -q "BEGIN.*PRIVATE KEY" ~/.ssh/id_rsa; then
603- echo "Error: SSH key does not appear to be in correct format"
604- exit 1
605- fi
606- # Configure SSH to use only the key file and disable other auth methods
607- cat > ~/.ssh/config <<EOF
608- Host *
609- IdentitiesOnly yes
610- PreferredAuthentications publickey
611- StrictHostKeyChecking no
612- UserKnownHostsFile ~/.ssh/known_hosts
613- PubkeyAuthentication yes
614- PasswordAuthentication no
615- ChallengeResponseAuthentication no
616- GSSAPIAuthentication no
617- GSSAPIKeyExchange no
618- GSSAPIDelegateCredentials no
619- Host $GREENGEEKS_HOST
620- User $GREENGEEKS_USER
621- IdentityFile ~/.ssh/id_rsa
622- IdentitiesOnly yes
623- PreferredAuthentications publickey
624- PubkeyAuthentication yes
625- PasswordAuthentication no
626- ChallengeResponseAuthentication no
627- GSSAPIAuthentication no
628- GSSAPIKeyExchange no
629- GSSAPIDelegateCredentials no
630- NumberOfPasswordPrompts 0
631- EOF
632- chmod 600 ~/.ssh/config
633- # Disable SSH agent completely
634- unset SSH_AUTH_SOCK
635- unset SSH_AGENT_PID
636- # Remove any default SSH keys that might interfere
637- rm -f ~/.ssh/id_ed25519 ~/.ssh/id_ecdsa ~/.ssh/id_dsa ~/.ssh/id_rsa.pub 2>/dev/null
638- ssh-keyscan -H "$GREENGEEKS_HOST" >> ~/.ssh/known_hosts 2>/dev/null
594+ uv run --with boto3 scripts/cloudflare-r2-upload.py "${{ steps.find_apk.outputs.APK_PATH }}" "${{ matrix.variant }}"
639595
640596 - name : Clean up build folder after upload
641597 run : |
@@ -735,6 +691,27 @@ jobs:
735691
736692 rm -f payload.json
737693
694+ - name : Send Telegram message
695+ env :
696+ TELEGRAM_TOKEN : ${{ secrets.TELEGRAM_TOKEN }}
697+ TELEGRAM_EARLY_ACCESS_CHAT_ID : ${{ vars.TELEGRAM_EARLY_ACCESS_CHAT_ID }}
698+ APK_PATH : ${{ steps.find_apk.outputs.APK_PATH }}
699+ VARIANT : ${{ matrix.variant }}
700+ run : |
701+ GIT_LOG=$(git log --oneline --since "24 hours ago" || true)
702+ if [ -z "$GIT_LOG" ]; then
703+ GIT_LOG="(no commits in the last 24 hours)"
704+ fi
705+ APK_BASENAME=$(basename "$APK_PATH")
706+ APK_FILENAME="${APK_BASENAME%.*}-${VARIANT}.${APK_BASENAME##*.}"
707+ DOWNLOAD_URL="https://download.appdevforall.org/${APK_FILENAME}"
708+ MESSAGE="${GIT_LOG}"$'\n\n'"Download: ${DOWNLOAD_URL}"
709+ # Telegram message limit 4096; use first 4096 chars
710+ MESSAGE="${MESSAGE:0:4096}"
711+ curl -s -X POST -H "Content-Type: application/json" \
712+ -d "$(jq -n --arg chat_id "$TELEGRAM_EARLY_ACCESS_CHAT_ID" --arg text "$MESSAGE" '{chat_id: $chat_id, text: $text}')" \
713+ "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage"
714+
738715 - name : Cleanup google-services.json
739716 if : always()
740717 run : |
0 commit comments