diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml new file mode 100644 index 0000000..af9d186 --- /dev/null +++ b/.github/workflows/build-app.yaml @@ -0,0 +1,65 @@ +name: 🏗️ Build & Release APK + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build: + name: 🔨 Build APK + runs-on: ubuntu-latest + + steps: + - name: 📥 Checkout repository + uses: actions/checkout@v5 + + - name: ☕ Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: 21 + + - name: 💾 Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper/ + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-${{ runner.os }}- + + - name: 🔑 Setup keystore + run: | + mkdir -p app + echo "${{ secrets.KEYSTORE }}" | base64 -d > app/anyapk-release.keystore + + - name: 🏭 Build Release APK + run: | + cd app + ../gradlew assembleRelease \ + -Pandroid.injected.signing.store.file=anyapk-release.keystore \ + -Pandroid.injected.signing.store.password="${{ secrets.KEYSTORE_PASSWORD }}" \ + -Pandroid.injected.signing.key.alias="${{ secrets.KEY_ALIAS }}" \ + -Pandroid.injected.signing.key.password="${{ secrets.KEY_PASSWORD }}" \ + --no-daemon + + - name: 📝 Extract versionName + id: get_version + run: | + VERSION_NAME=$(grep 'versionName =' app/build.gradle.kts | head -1 | sed 's/.*"\(.*\)".*/\1/') + echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV + + - name: 📦 Create GitHub Release & upload APK + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + name: "AnyAPK v${{ env.VERSION_NAME }}" + body: "📱 Automated release of AnyAPK" + draft: false + prerelease: false + files: app/build/outputs/apk/release/app-release.apk