Skip to content

Fixing workflow.

Fixing workflow. #13

name: EAS Android Build & Release
on:
push:
branches: [main]
workflow_dispatch:
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build-android:
name: Build Android App
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install EAS CLI
run: npm install -g eas-cli@latest
- name: Start EAS Build
id: build
run: |
BUILD_JSON=$(npx eas build -p android --profile production --non-interactive --json)
echo "EAS build response: $BUILD_JSON"
BUILD_ID=$(echo "$BUILD_JSON" | jq -r '.[0].id' 2>/dev/null)
if [[ -z "$BUILD_ID" || "$BUILD_ID" == "null" ]]; then
echo "Error: Failed to retrieve BUILD_ID!"
exit 1
fi
echo "BUILD_ID=$BUILD_ID" >> $GITHUB_ENV
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
- name: Wait for EAS Build to Complete
run: |
RETRY_COUNT=0
MAX_RETRIES=20
while [[ $RETRY_COUNT -lt $MAX_RETRIES ]]; do
BUILD_STATUS_JSON=$(npx eas build:view --build-id $BUILD_ID --json 2>/dev/null)
echo "Build status response: $BUILD_STATUS_JSON"
BUILD_STATUS=$(echo "$BUILD_STATUS_JSON" | jq -r '.status' 2>/dev/null)
if [[ -z "$BUILD_STATUS" || "$BUILD_STATUS" == "null" ]]; then
echo "Error: Failed to fetch build status!"
exit 1
fi
echo "Current Status: $BUILD_STATUS"
if [[ "$BUILD_STATUS" == "finished" ]]; then
APK_URL=$(echo "$BUILD_STATUS_JSON" | jq -r '.artifacts.buildUrl' 2>/dev/null)
echo "APK_URL=$APK_URL" >> $GITHUB_ENV
break
elif [[ "$BUILD_STATUS" == "errored" ]]; then
echo "EAS build failed."
exit 1
fi
RETRY_COUNT=$((RETRY_COUNT+1))
sleep 30
done
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
- name: Download APK
run: |
echo "Downloading APK from: $APK_URL"
curl -L $APK_URL -o app-release.apk
ls -lh app-release.apk
- name: Generate Changelog
id: changelog
run: |
echo "Generating changelog..."
echo "## Changelog" > changelog.txt
echo "" >> changelog.txt
git log --pretty=format:"- %s (%h) by %an" $(git rev-parse HEAD^)..HEAD >> changelog.txt
cat changelog.txt
echo "CHANGELOG<<EOF" >> $GITHUB_ENV
cat changelog.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v1.0.${{ github.run_number }}
name: Release v1.0.${{ github.run_number }}
body: ${{ env.CHANGELOG }}
draft: false
prerelease: false
files: app-release.apk