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:
Update AppStoreVersions resource manager to read phased release info of an App Store Version.
Significant cleanup of BuildsActionGroup was carried out. It was already very bloated and new functionality would have made it even worse. All methods related to actions submit-to-app-store and submit-to-testflight were moved/refactored into new standalone action classes SubmitToAppStoreAction and SubmitToTestFlightAction.
Methods in ResourceManagerMixin were made more generic so that instead of argument resource_id: ResourceId methods now accept resource_reference: ResourceId | LinkedResourceData. This is to allow using both resource and its ID as action argument via Python API.
Resource printer got a little overhaul to accommodate resource manager changes.
Changes related to static type checking:
Create dedicated protocols for resource managers that create, read, list, delete and modify resources. Those are used in ResourceManagerMixin method signatures.
In quite a few action and action group classes certain resource managers are cast to new resource manager protocols to aid mypy with resolving types.
- Phased release is created for App Store Version if it does not exist when publishing with option `--phased-release`
- Existing phased release is reused for App Store version if it exists and publishing with option `--phased-release`
- Existing phased release is removed from App Store Version if it exists and publishing with option `--no-phased-release`
- Phased release deletion of App Store Version is ignored if it doesn't exist and publishing with option `--no-phased-release`
- Phased release status of App Store Version is not modified if publishing without neither `--phased-release` nor `--no-phased-release`
Add option for phased released when submitting iOS or macOS app version to App Store
Actions
app-store-connect publish
andapp-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 groupapp-store-connect app-store-version-phased-releases
.Number of changes and additions were implemented in order to achieve this:
AppStoreVersionPhasedRelease
.AppStoreVersionPhasedReleases
to work with App Store Version phased releases, i.e. implement API client methods for https://developer.apple.com/documentation/appstoreconnectapi/app_store/app_store_version_phased_releases.AppStoreVersions
resource manager to read phased release info of an App Store Version.BuildsActionGroup
was carried out. It was already very bloated and new functionality would have made it even worse. All methods related to actionssubmit-to-app-store
andsubmit-to-testflight
were moved/refactored into new standalone action classesSubmitToAppStoreAction
andSubmitToTestFlightAction
.ResourceManagerMixin
were made more generic so that instead of argumentresource_id: ResourceId
methods now acceptresource_reference: ResourceId | LinkedResourceData
. This is to allow using both resource and its ID as action argument via Python API.Changes related to static type checking:
ResourceManagerMixin
method signatures.cast
to new resource manager protocols to aidmypy
with resolving types.Updated actions:
app-store-connect builds submit-to-app-store
app-store-connect publish
New action groups:
app-store-connect app-store-version-phased-releases
New actions:
app-store-connect app-store-version-phased-releases enable
app-store-connect app-store-version-phased-releases set-state
app-store-connect app-store-version-phased-releases cancel
app-store-connect app-store-versions phased-release
Basic usage:
QA notes