From 2d44ad2055eb74055689e48803172b9c7be45b22 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 10 Nov 2022 21:54:01 +0530 Subject: [PATCH] feat(github): make release workflow self-contained --- .github/workflows/release.yml | 56 ++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 02bc1a10..7348c662 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,6 @@ name: Release to Google Play on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+' + workflow_dispatch: jobs: publish-google-play-release: @@ -10,6 +8,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # tag=v3.1.0 + with: + depth: 0 - name: Set up JDK uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc # tag=v3.6.0 @@ -17,17 +17,35 @@ jobs: distribution: temurin java-version: 18 + - name: Set up Git author + shell: bash + run: | + git config user.name "GitHub Actions" + git config user.email noreply@github.com + + - name: Setup Gradle caching + uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # tag=v2.3.3 + with: + gradle-home-cache-cleanup: true + cache-read-only: true + - name: Decrypt secrets run: scripts/signing-setup.sh "$ENCRYPT_KEY" env: ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }} - - name: Build release bundle - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # tag=v2.3.3 - with: - arguments: collectReleaseBundle - gradle-home-cache-cleanup: true - cache-read-only: true + - name: Prepare release assets + shell: bash + run: | + # Remove the `-SNAPSHOT` suffix + ./gradlew -q clearPreRelease + git commit -am 'feat(release): bump version' + + # Build the release assets + ./gradlew collectReleaseApks collectReleaseBundle + + - name: Clean secrets + run: scripts/signing-cleanup.sh - name: Publish bundle to Google Play uses: r0adkll/upload-google-play@78c9e796b1035c94169c101d8e46cb880194bfc3 # tag=v1.0.19 @@ -40,5 +58,21 @@ jobs: track: production whatsNewDirectory: distribution/whatsnew - - name: Clean secrets - run: scripts/signing-cleanup.sh + - name: Post-release work + shell: bash + run: | + # Tag the current version + VERSION="$(tail -n1 android/version.properties | cut -d = -f 2)" + git tag "v${VERSION}" -F distribution/whatsnew/whatsnew-en-GB + + # Push everything to GitHub + git push origin --all + + # Create a GitHub release + gh release create "v${VERSION}" -F distribution/whatsnew/whatsnew-en-GB --title "v${VERSION}" ./android/apk/*.apk ./android/bundle/*.aab + + # Start the next development iteration + ./gradlew -q bumpSnapshot + truncate -s 0 distribution/whatsnew/whatsnew-en-GB # Clear changelog + git commit -am 'feat(release): start next development iteration' + git push origin main