docs(release): update whatsnew and changelog for v3.1.6-beta #57
Workflow file for this run
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 APK/AAB | |
| on: | |
| push: | |
| tags: | |
| - 'v*.*.*' # Semantic version tag, e.g. v3.1.4 | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate-release: | |
| name: Validate Release Metadata | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Validate release notes and tag/version consistency | |
| run: | | |
| chmod +x scripts/check_release_guard.sh | |
| if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then | |
| scripts/check_release_guard.sh "${GITHUB_REF_NAME}" | |
| else | |
| scripts/check_release_guard.sh | |
| fi | |
| build-apk: | |
| name: Build APKs | |
| needs: [validate-release] | |
| runs-on: ubuntu-latest | |
| env: | |
| HAS_RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE != '' }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: set up JDK 25 | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: '25' | |
| distribution: 'temurin' | |
| cache: gradle | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Decode Keystore | |
| if: env.HAS_RELEASE_KEYSTORE == 'true' | |
| run: echo "${{ secrets.RELEASE_KEYSTORE }}" | base64 --decode > app/release.jks | |
| - name: Build APKs with Splits | |
| run: ./gradlew assembleRelease -PbuildSplits | |
| env: | |
| KEYSTORE_FILE: release.jks | |
| STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} | |
| KEY_ALIAS: ${{ secrets.KEY_ALIAS }} | |
| KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
| - name: Upload APK Artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: apks | |
| path: app/build/outputs/apk/release/*.apk | |
| - name: Upload Native Symbols Artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: native-symbols | |
| path: app/build/outputs/native-debug-symbols/release/native-debug-symbols.zip | |
| if-no-files-found: warn | |
| build-aab: | |
| name: Build Bundle | |
| needs: [validate-release] | |
| runs-on: ubuntu-latest | |
| env: | |
| HAS_RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE != '' }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: set up JDK 25 | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: '25' | |
| distribution: 'temurin' | |
| cache: gradle | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Decode Keystore | |
| if: env.HAS_RELEASE_KEYSTORE == 'true' | |
| run: echo "${{ secrets.RELEASE_KEYSTORE }}" | base64 --decode > app/release.jks | |
| - name: Build App Bundle | |
| run: ./gradlew bundleRelease | |
| env: | |
| KEYSTORE_FILE: release.jks | |
| STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} | |
| KEY_ALIAS: ${{ secrets.KEY_ALIAS }} | |
| KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
| - name: Upload AAB Artifacts | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: bundle-assets | |
| path: | | |
| app/build/outputs/bundle/release/*.aab | |
| app/build/outputs/mapping/release/mapping.txt | |
| release: | |
| name: Create Release | |
| needs: [build-apk, build-aab] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| env: | |
| HAS_RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE != '' }} | |
| HAS_GOOGLE_PLAY_CREDENTIALS: ${{ secrets.ANDROID_PUBLISHER_CREDENTIALS != '' }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: apks | |
| path: artifacts/apks | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: bundle-assets | |
| path: artifacts/bundle | |
| - uses: actions/download-artifact@v7 | |
| with: | |
| name: native-symbols | |
| path: artifacts/symbols | |
| - name: Extract Version Name from Tag | |
| id: extract_version | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| TAG=${GITHUB_REF_NAME} # e.g. v3.1.4 | |
| if [[ "$TAG" == v* ]]; then | |
| echo "version_name=${TAG}" >> $GITHUB_OUTPUT | |
| else | |
| echo "version_name=v${TAG}" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create Draft Release | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') && env.HAS_RELEASE_KEYSTORE == 'true' | |
| with: | |
| name: ${{ steps.extract_version.outputs.version_name }} | |
| draft: true | |
| body: | | |
| <div align="center"> | |
| <a href="https://play.google.com/store/apps/details?id=com.github.tianma8023.xposed.smscode"> | |
| <img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" alt="Get it on Google Play" height="80"/> | |
| </a> | |
| <a href="https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"> | |
| <img src="https://raw.githubusercontent.com/machiav3lli/oandbackupx/master/badge_github.png" alt="Get it on GitHub" height="80"/> | |
| </a> | |
| </div> | |
| files: | | |
| artifacts/apks/*.apk | |
| artifacts/bundle/bundle/release/*.aab | |
| generate_release_notes: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GH_PAT }} | |
| - name: Determine Release Track | |
| id: determine_track | |
| run: | | |
| TAG_NAME=${{ github.ref_name }} | |
| if [[ "$TAG_NAME" == *"-beta"* ]]; then | |
| echo "track=beta" >> $GITHUB_OUTPUT | |
| elif [[ "$TAG_NAME" == *"-alpha"* ]]; then | |
| echo "track=alpha" >> $GITHUB_OUTPUT | |
| elif [[ "$TAG_NAME" == *"-internal"* ]]; then | |
| echo "track=internal" >> $GITHUB_OUTPUT | |
| else | |
| echo "track=production" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Publish to Google Play | |
| uses: r0adkll/upload-google-play@v1 | |
| if: startsWith(github.ref, 'refs/tags/') && env.HAS_GOOGLE_PLAY_CREDENTIALS == 'true' | |
| with: | |
| serviceAccountJsonPlainText: ${{ secrets.ANDROID_PUBLISHER_CREDENTIALS }} | |
| packageName: com.github.tianma8023.xposed.smscode | |
| releaseFiles: artifacts/bundle/bundle/release/*.aab | |
| mappingFile: artifacts/bundle/mapping/release/mapping.txt | |
| debugSymbols: artifacts/symbols/native-debug-symbols.zip | |
| track: ${{ steps.determine_track.outputs.track }} | |
| status: completed | |
| whatsNewDirectory: distribution/whatsnew | |
| publish-to-modules-repo: | |
| name: Publish to Xposed-Modules-Repo | |
| needs: [release] | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| env: | |
| HAS_MODULES_REPO_TOKEN: ${{ secrets.XPOSED_MODULES_REPO_TOKEN != '' }} | |
| HAS_RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE != '' }} | |
| MODULES_REPO: Xposed-Modules-Repo/com.github.tianma8023.xposed.smscode | |
| steps: | |
| - name: Download APK Artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: apks | |
| path: artifacts/apks | |
| - name: Extract Version Name from Tag | |
| id: extract_version | |
| run: | | |
| TAG=${GITHUB_REF_NAME} # e.g. v3.1.4 | |
| if [[ "$TAG" == v* ]]; then | |
| echo "version_name=${TAG}" >> $GITHUB_OUTPUT | |
| else | |
| echo "version_name=v${TAG}" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create Draft Release in Xposed-Modules-Repo | |
| if: env.HAS_MODULES_REPO_TOKEN == 'true' && env.HAS_RELEASE_KEYSTORE == 'true' | |
| run: | | |
| gh release create "${{ github.ref_name }}" \ | |
| artifacts/apks/*.apk \ | |
| --repo "${{ env.MODULES_REPO }}" \ | |
| --title "${{ steps.extract_version.outputs.version_name }}" \ | |
| --notes "<div align=\"center\"> | |
| <a href=\"https://play.google.com/store/apps/details?id=com.github.tianma8023.xposed.smscode\"> | |
| <img src=\"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png\" alt=\"Get it on Google Play\" height=\"80\"/> | |
| </a> | |
| <a href=\"https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}\"> | |
| <img src=\"https://raw.githubusercontent.com/machiav3lli/oandbackupx/master/badge_github.png\" alt=\"Get it on GitHub\" height=\"80\"/> | |
| </a> | |
| </div> | |
| Source: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}" \ | |
| --draft | |
| env: | |
| GH_TOKEN: ${{ secrets.XPOSED_MODULES_REPO_TOKEN }} |