@@ -296,6 +296,60 @@ jobs:
296296 name : appimage-package
297297 path : LinuxCommandLibrary-*.AppImage
298298
299+ play-store :
300+ name : Upload AAB to Play Store
301+ runs-on : ubuntu-latest
302+ steps :
303+ - name : Checkout
304+ uses : actions/checkout@v4
305+ with :
306+ fetch-depth : 0
307+ - name : Setup JDK
308+ uses : actions/setup-java@v4
309+ with :
310+ distribution : temurin
311+ java-version : " 17"
312+ - name : Set execution flag for gradlew
313+ run : chmod +x gradlew
314+ - name : Setup Android SDK
315+ uses : android-actions/setup-android@v3
316+ - name : Decode keystore
317+ run : echo "${{ secrets.KEYSTORE_B64 }}" | base64 --decode > /tmp/keystore.jks
318+ - name : Decode service account key
319+ run : echo "${{ secrets.SERVICE_ACCOUNT_JSON }}" | base64 --decode > fastlane/play-store-key.json
320+ - name : Extract changelog for Play Store
321+ run : |
322+ VERSION="${GITHUB_REF_NAME#v}"
323+ VERSION_CODE=$(grep "androidVersionCode" gradle/libs.versions.toml | head -1 | sed 's/.*= *"\([0-9]*\)".*/\1/')
324+ CHANGELOG_DIR="fastlane/metadata/android/en-US/changelogs"
325+ mkdir -p "$CHANGELOG_DIR"
326+ if [ -f CHANGELOG.md ]; then
327+ sed -n "/^## v${VERSION}/,/^## v/{ /^## v${VERSION}/d; /^## v/d; p; }" CHANGELOG.md > "$CHANGELOG_DIR/${VERSION_CODE}.txt"
328+ fi
329+ if [ ! -s "$CHANGELOG_DIR/${VERSION_CODE}.txt" ]; then
330+ PREVIOUS_TAG=$(git tag --sort=-creatordate | grep -v "^${GITHUB_REF_NAME}$" | head -n1)
331+ if [ -z "$PREVIOUS_TAG" ]; then
332+ git log --pretty=format:"- %s" "${GITHUB_REF_NAME}" > "$CHANGELOG_DIR/${VERSION_CODE}.txt"
333+ else
334+ git log --pretty=format:"- %s" "${PREVIOUS_TAG}..${GITHUB_REF_NAME}" --no-merges > "$CHANGELOG_DIR/${VERSION_CODE}.txt"
335+ fi
336+ fi
337+ # Play Store changelog limit is 500 characters
338+ truncate -s '<500' "$CHANGELOG_DIR/${VERSION_CODE}.txt" 2>/dev/null || true
339+ - name : Build signed AAB
340+ run : ./gradlew bundleRelease --stacktrace
341+ env :
342+ KEYSTORE_FILE : /tmp/keystore.jks
343+ KEYSTORE_PASSWORD : ${{ secrets.KEYSTORE_PASSWORD }}
344+ KEY_ALIAS : ${{ secrets.KEY_ALIAS }}
345+ - name : Setup Ruby
346+ uses : ruby/setup-ruby@v1
347+ with :
348+ ruby-version : ' 3.2'
349+ bundler-cache : true
350+ - name : Deploy to Play Store
351+ run : bundle exec fastlane android deploy
352+
299353 release :
300354 name : Release All Platforms
301355 needs : [apk, cli-linux, cli-macos, cli-windows, dmg, msi, deb, rpm, appimage]
0 commit comments