Merge pull request #3 from IzzySoft/fastlane #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release APK | ||
| on: | ||
| push: | ||
| tags: | ||
| - "v*" # Runs when a tag like "v6.0.1" is pushed | ||
| workflow_dispatch: | ||
| jobs: | ||
| build: | ||
| name: Build and Sign APK | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout Repository | ||
| uses: actions/checkout@v4 | ||
| - name: Set up JDK | ||
| uses: actions/setup-java@v3 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
| - name: Set up Android SDK | ||
| uses: android-actions/setup-android@v3 | ||
| - name: Decode Keystore | ||
| env: | ||
| KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} | ||
| run: | | ||
| echo "$KEYSTORE_BASE64" | base64 --decode > keystore.jks | ||
| - name: Set Environment Variables | ||
| run: | | ||
| echo "KEYSTORE_PATH=$PWD/keystore.jks" >> $GITHUB_ENV | ||
| echo "KEYSTORE_PASSWORD=$(echo -n '${{ secrets.KEYSTORE_PASSWORD }}')" >> $GITHUB_ENV | ||
| echo "KEY_ALIAS=$(echo -n '${{ secrets.KEY_ALIAS }}')" >> $GITHUB_ENV | ||
| echo "KEY_PASSWORD=$(echo -n '${{ secrets.KEY_PASSWORD }}')" >> $GITHUB_ENV | ||
| - name: Grant Execute Permission to Gradle | ||
| run: chmod +x gradlew | ||
| - name: Build APK | ||
| run: ./gradlew assembleRelease --stacktrace | ||
| - name: Find Release APK | ||
| run: | | ||
| APK_PATH=$(find app/build/outputs/apk/release -name '*.apk' -print -quit) | ||
| if [[ -z "$APK_PATH" ]]; then | ||
| echo "No APK found!" | ||
| exit 1 | ||
| fi | ||
| echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV | ||
| echo "Found APK at: $APK_PATH" | ||
| - name: Upload APK as Artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: Signed-APK | ||
| path: ${{ env.APK_PATH }} | ||
| release: | ||
| name: Create GitHub Release | ||
| needs: build | ||
| if: startsWith(github.ref, 'refs/tags/v') | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout Repository | ||
| uses: actions/checkout@v4 | ||
| - name: Download Signed APK | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: Signed-APK | ||
| path: artifacts/ | ||
| - name: Find and Rename APK | ||
| run: | | ||
| APK_PATH=$(find artifacts -name '*.apk' -print -quit) | ||
| if [[ -z "$APK_PATH" ]]; then | ||
| echo "No downloaded APK found!" | ||
| exit 1 | ||
| fi | ||
| echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV | ||
| mv "$APK_PATH" "XMLForge-${{ github.ref_name }}-release.apk" | ||
| - name: Publish Release using gh CLI with Auto Notes | ||
| run: | | ||
| gh release create "${{ github.ref_name }}" \ | ||
| "XMLForge-${{ github.ref_name }}-release.apk" \ | ||
| --title "XMLForge ${{ github.ref_name }}" \ | ||
| --generate-notes | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||