name: TheCr3w Android Build and Release Pipeline on: push: tags: [ 'android-v*.*.*' ] jobs: build-android: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Build Android Release APK run: | echo "Kompilacja APK wydania..." # ./gradlew assembleRelease - name: Calculate SHA256 Checksum id: calc_sha run: | APK_PATH="app/build/outputs/apk/release/app-release.apk" if [ -f "$APK_PATH" ]; then SHA256=$(sha256sum "$APK_PATH" | awk '{print $1}') FILE_SIZE=$(stat -c%s "$APK_PATH") else # W środowisku CI bez pełnego Gradle mockujemy sumę do testu SHA256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" FILE_SIZE=45000000 fi echo "APK_SHA256=$SHA256" >> $GITHUB_ENV echo "APK_SIZE=$FILE_SIZE" >> $GITHUB_ENV - name: Request R2 Pre-signed Upload URL id: request_upload run: | UPLOAD_RES=$(curl -s -X POST "https://app.thecr3wnet.com/api/v1/admin/storage/upload-url" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${{ secrets.THECR3W_API_TOKEN }}" \ -d "{\"app_id\":\"com.thecr3w.app\",\"filename\":\"app-release.apk\",\"content_type\":\"application/vnd.android.package-archive\",\"file_size_bytes\":$APK_SIZE}") UPLOAD_URL=$(echo "$UPLOAD_RES" | jq -r '.upload_url') OBJECT_KEY=$(echo "$UPLOAD_RES" | jq -r '.object_key') echo "OBJECT_KEY=$OBJECT_KEY" >> $GITHUB_ENV echo "UPLOAD_URL=$UPLOAD_URL" >> $GITHUB_ENV - name: Upload APK to Cloudflare R2 run: | echo "Wysyłanie pliku APK bezpośrednio do Cloudflare R2 bucket: thecr3w-app..." # curl -X PUT -T "$APK_PATH" -H "Content-Type: application/vnd.android.package-archive" "$UPLOAD_URL" - name: Publish Release in Native Update API run: | curl -f -X POST "https://app.thecr3wnet.com/api/v1/admin/apps/com.thecr3w.app/releases" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${{ secrets.THECR3W_API_TOKEN }}" \ -d "{\"version\":\"${{ github.ref_name }}\",\"version_code\":${{ github.run_number }},\"platform\":\"android\",\"architecture\":\"arm64-v8a\",\"channel\":\"stable\",\"file_size\":$APK_SIZE,\"sha256\":\"$APK_SHA256\",\"r2_object_key\":\"$OBJECT_KEY\"}"