name: Frontend Admin - EAS Build on: push: branches: [main] paths: - "frontend-admin/**" pull_request: branches: [main] paths: - "frontend-admin/**" jobs: typecheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: frontend-admin/package-lock.json - name: Install dependencies working-directory: frontend-admin run: npm ci - name: Typecheck working-directory: frontend-admin run: npx tsc --noEmit build-apk-preview: needs: typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: frontend-admin/package-lock.json - name: Setup Expo & EAS CLI uses: expo/expo-github-action@v8 with: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} - name: Install dependencies working-directory: frontend-admin run: npm ci - name: Inject EAS project ID working-directory: frontend-admin run: | jq '.expo.extra.eas.projectId = "${{ secrets.EXPO_PROJECT_ID }}"' app.json > app.tmp.json mv app.tmp.json app.json - name: Build production APK working-directory: frontend-admin env: EAS_BUILD_NO_EXPO_GO_WARNING: true run: eas build --platform android --profile preview --non-interactive - name: Download production APK working-directory: frontend-admin run: | APK_URL=$(eas build:list --platform android --status finished --limit 1 --json --non-interactive | jq -r '.[0].artifacts.buildUrl') curl -L -o admin-panel-prod.apk "$APK_URL" - name: Upload production APK artifact uses: actions/upload-artifact@v4 with: name: admin-panel-android-prod-apk path: frontend-admin/admin-panel-prod.apk retention-days: 14 build-apk-prod: needs: typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: frontend-admin/package-lock.json - name: Setup Expo & EAS CLI uses: expo/expo-github-action@v8 with: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} - name: Install dependencies working-directory: frontend-admin run: npm ci - name: Inject EAS project ID working-directory: frontend-admin run: | jq '.expo.extra.eas.projectId = "${{ secrets.EXPO_PROJECT_ID }}"' app.json > app.tmp.json mv app.tmp.json app.json - name: Build production APK working-directory: frontend-admin env: EAS_BUILD_NO_EXPO_GO_WARNING: true run: eas build --platform android --profile production --non-interactive - name: Download production APK working-directory: frontend-admin run: | APK_URL=$(eas build:list --platform android --status finished --limit 1 --json --non-interactive | jq -r '.[0].artifacts.buildUrl') curl -L -o admin-panel-prod.apk "$APK_URL" - name: Upload production APK artifact uses: actions/upload-artifact@v4 with: name: admin-panel-android-prod-apk path: frontend-admin/admin-panel-prod.apk retention-days: 14