name: Release on: push: tags: - "v*" permissions: contents: read jobs: build: runs-on: ubuntu-26.04 timeout-minutes: 60 permissions: contents: read outputs: version-code: ${{ steps.build.outputs.version-code }} steps: - uses: actions/checkout@v7 with: persist-credentials: false - id: build uses: ./.github/actions/build with: gradle-args: ":app:assembleRelease :app:bundleRelease --no-daemon" sign: "true" keystore-base64: ${{ secrets.SUBTRACKS_KEYSTORE_BASE64 }} keyproperties-base64: ${{ secrets.SUBTRACKS_KEYPROPERTIES_BASE64 }} keystore-password: ${{ secrets.SUBTRACKS_UPLOAD_STORE_PASSWORD }} key-password: ${{ secrets.SUBTRACKS_UPLOAD_KEY_PASSWORD }} - uses: actions/upload-artifact@v7 with: name: release path: app/build/outputs publish: needs: build runs-on: ubuntu-26.04 timeout-minutes: 60 permissions: contents: write steps: - uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/download-artifact@v8 with: name: release path: dist - uses: ./.github/actions/nix - name: Detect stable tag id: stable run: | if [[ "$GITHUB_REF_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "value=true" >> "$GITHUB_OUTPUT" else echo "value=false" >> "$GITHUB_OUTPUT" fi - name: Upload to Google Play if: steps.stable.outputs.value == 'true' env: PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.PLAY_SERVICE_ACCOUNT_JSON }} run: | umask 077 printf '%s' "$PLAY_SERVICE_ACCOUNT_JSON" > "$RUNNER_TEMP/play.json" nix develop .#release --command fastlane supply \ --aab dist/bundle/release/app-release.aab \ --package_name com.subtracks \ --track "${{ vars.PLAY_TRACK || 'internal' }}" \ --release_status completed \ --json_key "$RUNNER_TEMP/play.json" \ --metadata_path metadata \ --mapping dist/mapping/release/mapping.txt - name: Remove Play service account if: always() run: rm -f "$RUNNER_TEMP/play.json" - name: Collect release APK run: cp dist/apk/release/app-release.apk subtracks.apk - name: Create GitHub release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | args=(--verify-tag --title "$GITHUB_REF_NAME" --notes-file "metadata/en-US/changelogs/${{ needs.build.outputs.version-code }}.txt") if [ "${{ steps.stable.outputs.value }}" != "true" ]; then args+=(--prerelease) fi gh release create "$GITHUB_REF_NAME" subtracks.apk "${args[@]}"