name: Android Release Build on: push: tags: - '*' workflow_dispatch: {} jobs: build: runs-on: debian steps: - name: Checkout source uses: actions/checkout@v4 - name: Check Java version run: | if ! command -v java >/dev/null; then echo "โŒ Java is not installed" exit 1 fi echo "โœ… Java version:" java -version - name: Decode keystore run: | echo "$RELEASE_KEY_B64" | base64 -d > release-key.jks env: RELEASE_KEY_B64: ${{ secrets.RELEASE_KEY_B64 }} - name: Set up gradle run: chmod +x ./gradlew - name: Inject signing credentials run: | echo "RELEASE_STORE_FILE=release-key.jks" >> gradle.properties echo "RELEASE_STORE_PASSWORD=$KEYSTORE_PASSWORD" >> gradle.properties echo "RELEASE_KEY_ALIAS=release-key" >> gradle.properties echo "RELEASE_KEY_PASSWORD=$KEY_PASSWORD" >> gradle.properties - name: Build signed APK run: ./gradlew clean assembleRelease env: KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - name: Upload APK uses: actions/upload-artifact@v4 with: name: app-release.apk path: app/build/outputs/apk/release/app-release.apk - name: Cleanup secrets run: | rm -f release-key.jks gradle.properties echo "๐Ÿงน Secrets cleaned up"