name: Build & Deploy APK on: push: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout run: | git clone --depth 1 --branch "${GITHUB_REF_NAME}" \ "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" . - name: Validate environment run: | echo "Java: $(java --version 2>&1 | head -1)" echo "ANDROID_HOME: $ANDROID_HOME" test -d "$ANDROID_HOME" || { echo "ERROR: ANDROID_HOME not set"; exit 1; } - name: Build Release APK run: | chmod +x ./gradlew ./gradlew assembleRelease --no-daemon - name: Deploy APK & update version run: | STORAGE="/home/user/itstransport/backend/storage/app/android" VERSION_NAME=$(grep 'versionName' app/build.gradle.kts | head -1 | sed 's/.*"\(.*\)".*/\1/') VERSION_CODE=$(grep 'versionCode' app/build.gradle.kts | head -1 | sed 's/[^0-9]*//g') APK=$(find app/build/outputs/apk/release -name "*.apk" | head -1) test -n "$APK" || { echo "ERROR: No APK found"; exit 1; } cp "$APK" "$STORAGE/app-release.apk" COMMIT_MSG=$(git log -1 --pretty=%s | sed 's/"/\\"/g') python3 -c " import json data = { 'versionName': '$VERSION_NAME', 'versionCode': int('$VERSION_CODE'), 'releaseNotes': \"$COMMIT_MSG\" } with open('$STORAGE/version.json', 'w') as f: json.dump(data, f, indent=4, ensure_ascii=False) f.write('\n') " echo "Deployed v${VERSION_NAME} (code ${VERSION_CODE}) — $(du -h "$STORAGE/app-release.apk" | cut -f1)"