mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
Gate the Play upload on a full vX.Y.Z tag and mark other tags as prereleases. Fold the changelog length limit into MetadataConstraintsTest and make its image checks reject anything but PNG or JPEG. Keep the decoded keystore at 0600 and note in .forgejo/README.md that the GitHub CI now factors the build into composite actions.
89 lines
2.8 KiB
YAML
89 lines
2.8 KiB
YAML
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[@]}"
|