One release ships everything: Play, App Store, the APK and the F-Droid merge request #34

Merged
backmeupplz merged 4 commits from release-pipeline into main 2026-10-16 19:28:39 +00:00
backmeupplz commented 2026-10-16 18:39:38 +00:00 (Migrated from github.com)

A published GitHub release vX.Y.Z now ships ABS+ everywhere:

  • Google Play: the bundle goes to production with the changelog as release notes. A release still in review is withdrawn for this one (changesInReviewBehavior=CANCEL_IN_REVIEW_AND_SUBMIT).
  • App Store: ios/release.sh archives, signs ad hoc and exports with cloud signing, then uploads. appstore.py waits for processing, cancels a submission still waiting or in review, reuses or creates the version, sets What's New and submits it with automatic release. Build number = versionCode.
  • APK + F-Droid: the CI-built signed absplus-X.Y.Z.apk goes on the release, and while F-Droid MR !52829 is open its metadata is pushed to this version. Once it merges, F-Droid follows tags itself.
  • Manual runs: dry-run builds everything and publishes nothing (it prints the App Store plan and the F-Droid diff, and Play validates the edit); testflight-only uploads the iPhone build.

.github/scripts is stdlib-only, with app values in the workflow env, and is shared as-is with Mesh+ and Todorant.

Tested locally:

  • the script checks (python3 -m unittest discover -s .github/scripts), which CI now runs too;
  • ios/release.sh 1.2.1 6 --no-upload: archive and cloud-signed export give ABSPlus.ipa 1.2.1 (6), signed "Apple Distribution: Borodutch Labs Inc.";
  • appstore.py --dry-run against ABS+, Todorant and Mesh+, and fdroid.py --dry-run against MRs !51979, !52829 and !52830 (read-only).

Needs the ASC_KEY_P8 and GITLAB_TOKEN secrets. A step whose secret is missing is skipped with a warning.

🤖 Generated with Claude Code

A published GitHub release `vX.Y.Z` now ships ABS+ everywhere: - **Google Play:** the bundle goes to production with the changelog as release notes. A release still in review is withdrawn for this one (`changesInReviewBehavior=CANCEL_IN_REVIEW_AND_SUBMIT`). - **App Store:** `ios/release.sh` archives, signs ad hoc and exports with cloud signing, then uploads. `appstore.py` waits for processing, cancels a submission still waiting or in review, reuses or creates the version, sets What's New and submits it with automatic release. Build number = `versionCode`. - **APK + F-Droid:** the CI-built signed `absplus-X.Y.Z.apk` goes on the release, and while F-Droid MR !52829 is open its metadata is pushed to this version. Once it merges, F-Droid follows tags itself. - **Manual runs:** `dry-run` builds everything and publishes nothing (it prints the App Store plan and the F-Droid diff, and Play validates the edit); `testflight-only` uploads the iPhone build. `.github/scripts` is stdlib-only, with app values in the workflow env, and is shared as-is with Mesh+ and Todorant. Tested locally: - the script checks (`python3 -m unittest discover -s .github/scripts`), which CI now runs too; - `ios/release.sh 1.2.1 6 --no-upload`: archive and cloud-signed export give ABSPlus.ipa 1.2.1 (6), signed "Apple Distribution: Borodutch Labs Inc."; - `appstore.py --dry-run` against ABS+, Todorant and Mesh+, and `fdroid.py --dry-run` against MRs !51979, !52829 and !52830 (read-only). Needs the `ASC_KEY_P8` and `GITLAB_TOKEN` secrets. A step whose secret is missing is skipped with a warning. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.