name: Release to Google Play on: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} jobs: publish-google-play-release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: token: ${{ secrets.POST_RELEASE_GH_TOKEN }} fetch-depth: 0 - name: Accept all SDK licenses shell: bash run: printf 'y\ny\ny\ny\ny\ny\n' | $ANDROID_HOME/tools/bin/sdkmanager --licenses - name: Get build-tools directory id: build-tools-path shell: bash run: echo "dir=${ANDROID_HOME}/build-tools/34.0.0-rc3" >> "${GITHUB_OUTPUT}" - name: Cache build-tools uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3 with: path: ${{ steps.build-tools-path.outputs.dir }} key: ${{ runner.os }}-34.0.0-rc3 - name: Set up JDK uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 # v3.11.0 with: 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@749f47bda3e44aa060e82d7b3ef7e40d953bd629 # v2.4.2 with: gradle-home-cache-cleanup: true cache-read-only: true - name: Decrypt secrets run: | ./scripts/setup-age.sh ./scripts/signing-setup.sh "$ENCRYPT_KEY" env: ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }} - name: Get current version shell: bash run: | ./gradlew -q --no-configuration-cache clearPreRelease VERSION="$(tail -n1 android/version.properties | cut -d = -f 2)" echo VERSION="${VERSION}" >> $GITHUB_ENV - name: Update changelog uses: msfjarvis/keep-a-changelog-new-release@bf43ae42f4e42f137572950af426efcf6e777207 # 2.1.0 with: tag: v${{ env.VERSION }} version: ${{ env.VERSION }} - name: Commit changes shell: bash run: | git commit -am 'feat(release): bump version' - name: Build release assets shell: bash env: SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | ./gradlew --no-configuration-cache collectReleaseApks collectReleaseBundle -PsentryUploadMappings - name: Clean secrets run: scripts/signing-cleanup.sh - name: Get changelog entry id: changelog_reader uses: mindsers/changelog-reader-action@b97ce03a10d9bdbb07beb491c76a5a01d78cd3ef # v2.2.2 with: version: ${{ env.VERSION }} path: ./CHANGELOG.md - name: Write release notes file shell: bash env: CHANGELOG: ${{ steps.changelog_reader.outputs.changes }} run: | mkdir -p distribution/whatsnew printf '## Changelog\n\n' > distribution/whatsnew/whatsnew-en-GB printf '%s' "${CHANGELOG}" >> distribution/whatsnew/whatsnew-en-GB - name: Publish bundle to Google Play uses: r0adkll/upload-google-play@70c7397e868b00eccd390222f492ab3e30520d09 # v1.1.1 with: mappingFile: android/bundle/mapping.txt packageName: dev.msfjarvis.claw.android releaseFiles: android/bundle/*.aab serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }} status: completed track: production whatsNewDirectory: distribution/whatsnew - name: Post-release work shell: bash env: GITHUB_TOKEN: ${{ secrets.POST_RELEASE_GH_TOKEN }} run: | # Tag the current version git tag "v${VERSION}" -F distribution/whatsnew/whatsnew-en-GB # Push the tag to GitHub git push origin "v${VERSION}" # Create a GitHub release gh release create "v${VERSION}" --notes-file distribution/whatsnew/whatsnew-en-GB --title "v${VERSION}" ./android/apk/*.apk ./android/bundle/*.aab # Start the next development iteration ./gradlew -q --no-configuration-cache bumpSnapshot truncate -s 0 distribution/whatsnew/whatsnew-en-GB # Clear changelog git commit -am 'feat(release): start next development iteration' git push -u origin