codemagic-ci-cd / cli-tools

Various utilities to managing Android and iOS app builds, code signing, and deployment.
https://codemagic.io/start/
GNU General Public License v3.0
235 stars 39 forks source link

Feature: App Store Publishing Phased Releases #402

Closed priitlatt closed 2 months ago

priitlatt commented 2 months ago

Add option for phased released when submitting iOS or macOS app version to App Store

Actions app-store-connect publish and app-store-connect builds submit-to-app-store accept now optional (but mutually exclusive) switches --phased-release and --no-phased-release to either turn on or off releasing a version update in phases, respectively. If neither of the options are used, then App Store submission will work just as it used to. Additionally phased release status of a version can be managed directly using new actions in group app-store-connect app-store-version-phased-releases.

Number of changes and additions were implemented in order to achieve this:

Changes related to static type checking:

Updated actions:

New action groups:

New actions:

Basic usage:

app-store-connect publish \
  --path /path/to/app \
  --app-store \
  --phased-release \
  <other App Store publishing arguments> ...

QA notes

- Phased release is created for App Store Version if it does not exist when publishing with option `--phased-release` phased-release-enable-was-disabled - Existing phased release is reused for App Store version if it exists and publishing with option `--phased-release` phased-release-enable-was-enabled - Existing phased release is removed from App Store Version if it exists and publishing with option `--no-phased-release` phased-release-disable-was-enabled - Phased release deletion of App Store Version is ignored if it doesn't exist and publishing with option `--no-phased-release` phased-release-disable-was-disabled - Phased release status of App Store Version is not modified if publishing without neither `--phased-release` nor `--no-phased-release` phased-release-unspecified