fix: CI ota job

This commit is contained in:
2026-05-10 16:33:53 +02:00
parent 8792b1691e
commit 2bec488fd9
2 changed files with 58 additions and 31 deletions
@@ -53,8 +53,10 @@ jobs:
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Install EAS CLI
run: npm install -g eas-cli
- name: Install EAS CLI & cache deps
run: |
npm install -g eas-cli
pip install -r scripts/requirements.txt --quiet
- name: Install dependencies
working-directory: frontend-admin
@@ -78,17 +80,36 @@ jobs:
echo "profile=pre-prod" >> $GITHUB_OUTPUT
echo "channel=pre-prod" >> $GITHUB_OUTPUT
echo "api_url=https://5.181.0.112.nip.io" >> $GITHUB_OUTPUT
echo "apk_name=admin-panel-preview-$(date +%Y%m%d-%H%M).apk" >> $GITHUB_OUTPUT
echo "apk_name=admin-panel-pre-prod-$(date +%Y%m%d-%H%M).apk" >> $GITHUB_OUTPUT
fi
- name: Restore Gradle cache (RustFS)
env:
AWS_ACCESS_KEY_ID: ${{ secrets.RUSTFS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.RUSTFS_SECRET_KEY }}
S3_ENDPOINT: https://s3.uber-stup.club
S3_BUCKET: apk-builds
run: python scripts/eas_cache.py restore --app frontend-admin
- name: Build APK (local)
working-directory: frontend-admin
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
EXPO_PUBLIC_API_URL: ${{ steps.config.outputs.api_url }}
EAS_BUILD_NO_EXPO_GO_WARNING: true
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError"
JAVA_TOOL_OPTIONS: "-Xmx4096m"
run: eas build --platform android --profile ${{ steps.config.outputs.profile }} --local --non-interactive
- name: Save Gradle cache (RustFS)
if: success() || failure()
env:
AWS_ACCESS_KEY_ID: ${{ secrets.RUSTFS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.RUSTFS_SECRET_KEY }}
S3_ENDPOINT: https://s3.uber-stup.club
S3_BUCKET: apk-builds
run: python scripts/eas_cache.py save --app frontend-admin
- name: Rename APK
working-directory: frontend-admin
run: mv *.apk ${{ steps.config.outputs.apk_name }}
@@ -124,9 +145,6 @@ jobs:
working-directory: frontend-admin
run: npm ci
- name: Install EAS CLI
run: npm install -g eas-cli
- name: Determine channel & env
id: config
run: |
@@ -137,22 +155,28 @@ jobs:
else
echo "channel=pre-prod" >> $GITHUB_OUTPUT
echo "api_url=https://5.181.0.112.nip.io" >> $GITHUB_OUTPUT
echo "message=Preview update $(date +%Y%m%d-%H%M)" >> $GITHUB_OUTPUT
echo "message=Pre-prod update $(date +%Y%m%d-%H%M)" >> $GITHUB_OUTPUT
fi
- 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: Publish OTA update to Xavia
working-directory: frontend-admin
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
EXPO_PUBLIC_API_URL: ${{ steps.config.outputs.api_url }}
XAVIA_SERVER_URL: https://ota.uber-stup.club
run: |
npx expo export --platform android
curl -X POST "$XAVIA_SERVER_URL/api/updates" \
RUNTIME_VERSION=$(jq -r '.expo.runtimeVersion // .expo.version' app.json)
npx expo export --platform android --output-dir dist
cd dist && zip -r ../bundle.zip . && cd ..
curl -X POST "https://ota.uber-stup.club/api/upload" \
-H "Authorization: Bearer ${{ secrets.XAVIA_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"channel": "${{ steps.config.outputs.channel }}",
"message": "${{ steps.config.outputs.message }}",
"platform": "android"
}'
-F "file=@bundle.zip" \
-F "runtimeVersion=$RUNTIME_VERSION" \
-F "commitHash=${{ github.sha }}" \
-F "commitMessage=${{ steps.config.outputs.message }}" \
--fail
@@ -1,4 +1,4 @@
name: Frontend Admin - EAS Build
name: Frontend Client - EAS Build
on:
push:
@@ -80,7 +80,7 @@ jobs:
echo "profile=pre-prod" >> $GITHUB_OUTPUT
echo "channel=pre-prod" >> $GITHUB_OUTPUT
echo "api_url=https://5.181.0.112.nip.io" >> $GITHUB_OUTPUT
echo "apk_name=mobile-preview-$(date +%Y%m%d-%H%M).apk" >> $GITHUB_OUTPUT
echo "apk_name=mobile-pre-prod-$(date +%Y%m%d-%H%M).apk" >> $GITHUB_OUTPUT
fi
- name: Restore Gradle cache (RustFS)
@@ -145,9 +145,6 @@ jobs:
working-directory: mobile
run: npm ci
- name: Install EAS CLI
run: npm install -g eas-cli
- name: Determine channel & env
id: config
run: |
@@ -158,22 +155,28 @@ jobs:
else
echo "channel=pre-prod" >> $GITHUB_OUTPUT
echo "api_url=https://5.181.0.112.nip.io" >> $GITHUB_OUTPUT
echo "message=Preview update $(date +%Y%m%d-%H%M)" >> $GITHUB_OUTPUT
echo "message=Pre-prod update $(date +%Y%m%d-%H%M)" >> $GITHUB_OUTPUT
fi
- name: Inject EAS project ID
working-directory: mobile
run: |
jq '.expo.extra.eas.projectId = "${{ secrets.EXPO_PROJECT_ID_CLIENT }}"' app.json > app.tmp.json
mv app.tmp.json app.json
- name: Publish OTA update to Xavia
working-directory: mobile
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
EXPO_PUBLIC_API_URL: ${{ steps.config.outputs.api_url }}
XAVIA_SERVER_URL: https://ota.uber-stup.club
run: |
npx expo export --platform android
curl -X POST "$XAVIA_SERVER_URL/api/updates" \
RUNTIME_VERSION=$(jq -r '.expo.runtimeVersion // .expo.version' app.json)
npx expo export --platform android --output-dir dist
cd dist && zip -r ../bundle.zip . && cd ..
curl -X POST "https://ota.uber-stup.club/api/upload" \
-H "Authorization: Bearer ${{ secrets.XAVIA_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"channel": "${{ steps.config.outputs.channel }}",
"message": "${{ steps.config.outputs.message }}",
"platform": "android"
}'
-F "file=@bundle.zip" \
-F "runtimeVersion=$RUNTIME_VERSION" \
-F "commitHash=${{ github.sha }}" \
-F "commitMessage=${{ steps.config.outputs.message }}" \
--fail