Features
- Add 11 new App Store Connect locales from Apple's March 2026 expansion: Bangla (
bn-BD), Gujarati (gu-IN), Kannada (kn-IN), Malayalam (ml-IN), Marathi (mr-IN), Odia (or-IN), Punjabi (pa-IN), Slovenian (sl-SI), Tamil (ta-IN), Telugu (te-IN), Urdu (ur-PK). Total supported locales: 50.
Docs
- Update
--localeargument options forapp-store-connect app-store-versions localizations. - Update
--localeargument options forapp-store-connect beta-build-localizations create. - Update
--localeargument options forapp-store-connect beta-build-localizations list. - Update
--localeargument options forapp-store-connect builds add-beta-test-info. - Update
--localeargument options forapp-store-connect builds submit-to-app-store. - Update
--localeargument options forapp-store-connect publish.
This release contains changes from PR #489.
Features
- Update default argument values for tool
app-store-connectto be consistent with Xcode 16.0+. This changes where downloaded signing files are saved by default.- Argument
--certificates-dirdefaults now to~/Library/Developer/Xcode/UserData/Certificates. - Argument
--profiles-dirdefaults now to~/Library/Developer/Xcode/UserData/Provisioning Profiles.
- Argument
- Update action
keychain add-certificatesargument--certificateto look up certificates from~/Library/Developer/Xcode/UserData/Certificates. Old certificates location remains also included in the default glob patterns. - Update action
xcode-project use-profilesargument--profileto look up provisioning profiles from~/Library/Developer/Xcode/UserData/Provisioning Profiles.by default. Old certificates location remains also included in the default glob patterns.
Docs
- Update docs for
app-store-connect. - Update docs for
keychain add-certificates. - Update docs for
xcode-project use-profiles.
This is a development release that contains changes from PR #486 and PR #487. There are no functional changes for the package end-users.
Development
- Replace Poetry package management system with uv.
- Update CI scripts to use
uvinstead ofpoetry. - Replace Black code formatter with the Ruff Formatter.
Dependencies
- Update Python dependencies in lockfile.
- Remove
blackfrom dev dependencies.
This release contains changes from PR #481.
Bugfixes
- Do not require deprecated
ageRatingDeclarationrelationship forcodemagic.apple.resources.AppStoreVersion.
Development
- Define [
AppVersionState] enumeration for App Store Connect resources and use it onAppStoreVersionresource. - Make deprecated attributes
usesIdfaandappStoreStateoptional onAppStoreVersionresource.
This release contains changes from PR #478.
Bugfixes
- Fail
app-store-connect publishaction whenaltoolfails with errors but successful returncode. - Fix parsing
altoolresult from command output if the JSON-encoded result spans multiple lines.
Development
- Update schema for
codemagic.models.altool.AltoolResultto match recent output from recentaltoolversions.
This release contains changes from PR #477.
Bugfixes
- Support
Runtime Warningtest node type for XCTest results which was added by Xcode 26. Fixes actionsxcode-project run-tests,xcode-project test-summary,xcode-project junit-test-results.
Development
- Rename submodule
xcode_16_xcresulttoxcresultin packagecodemagic.models.xctest.xcresult.
This release contains changes from PR #476.
Features
- Add
--altool-additional-argumentsoption to theapp-store-connect publishaction. This allows passing extra CLI arguments directly toaltoolduring the app upload process.
Docs
- Update docs for
app-store-connect publish.
Bugfixes
- Fix
TypeErrorinfirebase-app-distributionactions if Firebase release response is missingdisplayVersionattribute. PR #474
Bugfixes
- Fix action
firebase-app-distribution get-latest-build-versionby supporting newupdateTimeandexpireTimetimestamps for releases. PR #473
This release contains changes from PR #469.
Features
- Add option
--delete-stale-profilesto actionapp-store-connect fetch-signing-filesto delete encountered stale provisioning profiles. Those profiles are not shown in Apple Developer Portal and cannot be queried using normal App Store Connect API profiles read and listing endpoints.
Docs
- Update docs for
app-store-connect fetch-signing-files.
Bugfix
- Fix
--typeargument forgoogle-play deobfuscation-files upload. PR #470
This release contains changes from PR #467.
Breaking
- Enumeration value
DEVELOPER_ID_APPLICATION_G2is removed fromcodemagic.apple.resources.CertificateType.
Bugfixes
- Fix action
app-store-connect fetch-signing-fileswhen fetching signing files for macOS apps that use direct distribution provisioning profiles (invoked with either option--type=MAC_APP_DIRECTor--type=MAC_CATALYST_APP_DIRECT). - Fix action
app-store-connect certificates listwhen listing certificates for macOS direct distribution provisioning profiles or explicitly with typeDEVELOPER_ID_APPLICATION_G2(either invoked with--profile-type=MAC_APP_DIRECT,--profile-type=MAC_CATALYST_APP_DIRECTor--type=DEVELOPER_ID_APPLICATION_G2). - Fix action
app-store-connect certificates createwhen invoked with--type=DEVELOPER_ID_APPLICATION_G2.
Docs
- Update docs for
app-store-connect certificates create. - Update docs for
app-store-connect certificates list.
- Fix parsing datetime in Apple API response that contains nanoseconds. PR #465.
Improvements
- Add missing App Store Connect locale definition for Vietnamese language. PR #466
Special thanks for contribution to @xalanq.
- Fix
google-play apks publishandgoogle-play apks uploadactions on Windows. PR #463.
This release contains changes from PR #461.
Features
- Added support for a new configuration option to define a custom bundletool.jar path.
- Add option to specify custom bundletool jar for
android-app-bundlevia--bundletoolargument. - New action
android-app-bundle bundletool infoto show information about used Bundletool (Java runtime, Bundletool path and Bundletool version).
Deprecations
- Action
android-app-bundle bundletool-versionwas deprecated and shows a warning message when invoked. It is replaced byandroid-app-bundle bundletool version.
Development
codemagic.shell_tools.Bundletoolnow accepts optional keyword argumentjarto specify bundletool jar path that should be used.
Bugfixes
- Fix using non-built-in types for CLI arguments that can be defined via environment variables.
Docs
- Update docs for tool
android-app-bundle.
Bugfixes
- Fix empty release notes text usage for Google Play release tracks. PR #462
Improvements
- Speed up Androguard installation with
codemagic-cli-tools ensure-androguradon hosts whereuvis present. PR #463s
Bugfixes
- Fix socket timeouts on
google-playactions. PR #460
Bugfixes
- Use retrying for Google API requests to avoid intermittent timeout errors. PR #456
- Fix errors in
AabPackage.get_summaryandApkPackage.get_summarymethods for cases when certificate contained unexpected issuer and subject attributes. PR #457 - Fix converting bytes to strings on Windows using Windows-1252 encoding. PR #458
This release contains changes from PR #455
Features
- Add action
codemagic-cli-tools ensure-androguardto pre-installandroguarddependency that is required for working with APK files.
Bugfixes
- Fix
ValueErrorwhen initializing more than oneApkPackageinstances using Python APIs. - Fix available commands listings in terminal help messages for tools with hidden deprecated actions.
Development
- Add possibility to define hidden actions which are excluded from Markdown docs and terminal help messages.
Bugfixes
- Fix Python API for
AppStoreConnect.submit_to_app_storefor macOS applications when platform was specified only via version info and not directly as method argument. PR #453
Bugfixes
- Fix submitting uploaded application to App Store when running action
app-store-connect publishusing--app-storeflag. PR #452
Bugfixes
- Fix action
android-app-bundle signwhen invoked with keystore arguments. PR #449
Dependencies
- Make
androguardPython dependency optional and install it during runtime when it is needed. PR #448
Bugfixes
- Fix actions
android-app-bundle build-apksandandroid-app-bundle build-universal-apkwhen invoked with keystore arguments. PR #447
This release contains changes from PR #446 and adds new features to tool google-play to manage Google Play releases and application uploads.
Features
- Update action
android-app-bundle dumpto be fully compatible with Bundletool dump options. - Add new actions to tool
google-play:google-play apks listto list uploaded APKs,google-play apks uploadto upload new APK,google-play bundles listto list uploaded App Bundles,google-play bundles publishto publish App Bundle as a new release,google-play bundles uploadto upload new App Bundle,google-play deobfuscation-files uploadto upload new deobfuscation file for an APK,google-play expansion-files referenceto reference existing expansion file for an APK,google-play expansion-files uploadto upload new expansion file for an APK,google-play internal-app-sharing upload-apkto upload an APK for internal app sharing,google-play internal-app-sharing upload-bundleto upload an App Bundle for internal app sharing,google-play internal-app-sharing uploadto upload either an APK or App Bundle for internal app sharing,google-play tracks set-releaseto set latest release for a track.
Dependencies
- Add new Python dependency
androguardto work with APK files. - Update included Bundletool.jar version from 1.13.1 to 1.18.0.
Development
- Add new
AabPackageandApkPackageclasses tocodemagic.models.application_packageto gather meta information from Android App Bundles and APKs. - Add new Python services to package
codemagic.google.services.google_playalong with relevant resource definitions:ApksServiceto interact withedits.apksin Google Play Developer API.BundlesServiceto interact withedits.bundlesin Google Play Developer API.DeobfuscationFilesServiceto interact withedits.deobfuscationfilesin Google Play Developer API.ExpansionFilesServiceto interact withedits.expansionfilesin Google Play Developer API.InternalAppSharingArtifactsServiceto interact withinternalappsharingartifactsin Google Play Developer API.
- Extract direct
jarsignerandbundletoolcalls fromAndroidAppBundleclass into standalone shell tool implementations incodemagic.shell_tools.
Documentation
- Update documentation for actions:
android-app-bundle dump,google-play tracks promote-release.
- Add documentation for new action groups:
google-play apks,google-play bundles,google-play deobfuscation-files,google-play expansion-files,google-play internal-app-sharing.
- Add documentation for new actions:
google-play apks list,google-play apks publish,google-play apks upload,google-play bundles list,google-play bundles publish,google-play bundles upload,google-play deobfuscation-files upload,google-play expansion-files reference,google-play expansion-files upload,google-play internal-app-sharing upload-apk,google-play internal-app-sharing upload-bundle,google-play internal-app-sharing upload,google-play tracks set-release.
This release contains changes from PR #442, PR #443 and PR #444. The aim of this release is to unify Firebase and Google Play API clients to use the same modular resource management architecture with shared authentication backend.
Some of the changes to Python API are backwards incompatible.
Deprecations
- Using environment variable
GCLOUD_SERVICE_ACCOUNT_CREDENTIALSis deprecated in favor ofGOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALSto specify Google Play service account key forgoogle-playinstead of explicitly passing--credentials. A warning message is shown if deprecated environment variable is used.
Documentation
- Duplicate action group documentation in respective action group documentation directory in
README.md.
Development
- Breaking: Remove old Google Play API client
GooglePlayDeveloperAPIClientand wholecodemagic.google_playpackage. - Add new Google Play API client
codemagic.google.GooglePlayClient. - Refactor package
codemagic.google.resource_managerstocodemagic.google.services. - Unify
codemagic.apple.resources.DictSerializableandcodemagic.google_play.resources.resource.DictSerializableinto reusablecodemagic.models.DictSerializable. - Update
black,mypyandruffdevelopment dependencies. - Reformat sources to comply with latest
blackandruffversions. - Remove old type stubs for
psutilpackage andremodule. - Add new development dependency
types-psutil.
Changes in this release are from PR #441.
Development
- Breaking: Deprecate Python 3.7, and Python 3.8 is now the minimum version of Python required.
- Add support to Python 3.13.
- Update
cffiversion to be compatible with latest version. - Add Python 3.13 to GitHub Actions test matrix.
Bugfixes
- Fix
team_identifierproperty oncodemagic.models.ProvisioningProfileto always return a string as the type hint suggests. PR #440
Bugfixes
- Support device class
APPLE_SILICON_MACon App Store Connect APIDeviceresponses. PR #437 - Make undocumented
preOrderand deprecatedinAppPurchasesrelationships on App Store connect https://developer.apple.com/documentation/appstoreconnectapi/app/relationships-data.dictionary model optional . PR #439
Improvements
- Fail action
app-store-connect fetch-signing-filesearly with descriptive error message if bundle ID identifier is not given. PR #438
Bugfixes
- Fix action
keychain add-certificatesfor macOS 15.1 when adding certificates with empty password. PR #436 - Introduce a new retrying condition for
altoolcommands as part ofapp-store-connectaction when unexpected return codes occurs. PR #435
Bugfixes
- Fix testcase duration parsing from
XCResultbundle when using Xcode 16.0+. PR #433
This release contains changes from PR #431
Features
- Use new
xcresulttoolAPIs for XcResult parsing when Xcode 16+ is selected. Applies toxcode-projectactionsrun-tests,test-summaryandjunit-test-results.
Bugfixes
- Omit
failuresanderrorsattributes from JUnit<testsuites>in case none of the child<testsuite>elements specify those values instead of setting them to0.
Development
- Add new XcResult to JUnit test results converter implementation
Xcode16XcResultConverter. - Rename
XcResultConvertertoLegacyXcResultConverter. - Add abstract
XcResultConverterwhich automatically chooses correct implementation. - Refactor module
codemagic.models.xctest.xcresultto a package and move its contents to submodulelegacy_xcresult. All public definitions remain accessible using the old namespace. - Add submodule
xcode_16_xcresultto packagecodemagic.models.xctest.xcresult. - Remove method
get_tool_versionfromXcResultTool. - Add methods
is_legacy,get_test_report_summaryandget_test_report_teststoXcResultTool. - Prohibit using
XcResultToolmethodsget_objectandget_bundlewhen Xcode 16 or newer is selected.
Development
- Change release pipeline not to include source distributions in PyPI releases. Those are still available from GitHub. PR #429
Bugfixes
- Fix action
keychain add-certificateson macOS 15.0. PR #428
Bugfixes
- Fix saving Apple code signing certificates to disk when using LibreSSL 3.0.0+. PR #427
Features
Bugfixes
- Cache generated fallback enumeration types so that enum identity checks work for undefined, but allowed enumerations. PR #425
Docs
- Update documentations for the following actions: PR #425
app-store-connect app-store-versions localizations,app-store-connect beta-build-localizations create,app-store-connect beta-build-localizations list,app-store-connect builds add-beta-test-info,app-store-connect builds submit-to-app-store,app-store-connect publish.
This release contains changes from PR #421 and PR #422
Development
- Add support for mutually exclusive groups on argument parser.
Deprecations
-
The argument
--project-idhas been deprecated in favor of--project-numberon all actions of the toolfirebase-app-distributionto be compliant with the Firebase documentation. -
A warning message is shown if commands are invoked with the deprecated argument.
This is a bugfix version containing changes from PR #424 to fix test result parsing with Xcode 16.0 beta 3+.
Bugfixes
- The following actions were fixed when used in conjunction with Xcode 16.0 beta 3+:
xcode-project run-tests,xcode-project test-summary,xcode-project junit-test-results.
Development
- Add
get_tool_versionmethod tocodemagic.models.xctests.XcResultToolwhich can be used to detectxcresulttoolversion from currently active Xcode developer directory.
This release contains changes from PR #415.
Bugfixes
- Support signing certificates with type
DEVELOPER_ID_APPLICATION_G2forapp-store-connect.
Development
- Update
ruffsettings to be compatible with latest version. - Update
pre-commithook versions.
This is a bugfix release to resolve a regression that was introduced in version 0.53.1. PR #413
Bugfixes
- Remove type-checking import statement that is not available on Python 3.7.
This bugfix release contains changes from PR #411.
Bugfixes
- Fix saving code signing certificates fetched from App Store Connect if the certificate subject line contains non-ascii characters and export is done using OpenSSL version 3.2+.
Dependencies:
- Set lower bound version limit
>= 38.0.0tocryptographydependency.
Feature
- Update action
app-store-connect publishto allow adding builds to beta groups without submitting to TestFlight. PR #410
Feature
- Add optional argument
--platformto actionapp-store-connect apps buildsto list builds only for selected platform. PR #407 - Add optional argument
--platformto actionapp-store-connect builds listto list builds only for selected platform. PR #407 - Add optional argument
--platformto actionapp-store-connect apps expire-build-submitted-for-reviewto expire builds only for specified platform. PR #407
Bugfixes
- Action
app-store-connect publishwill only expire builds for the same platform that is being published when invoked with option--expire-build-submitted-for-review. PR #407 - Fix argument
--credentialsvalidation for toolgoogle-play. PR #406
Documentation
- Update documentation for actions: PR #407
app-store-connect apps builds,app-store-connect apps expire-build-submitted-for-review,app-store-connect builds list.
This is a bugfix release containing changes from PR #405. Apple removed idfaDeclaration key from the data structure that represents App Store Version resources, which caused failures in App Store Connect client methods. Consequently, CLI actions started to fail.
Bugfixes
- Fix actions:
app-store-connect app-store-versions create,app-store-connect app-store-versions update,app-store-connect apps app-store-versions,app-store-connect builds app-store-version,app-store-connect builds submit-to-app-store,app-store-connect publishwhen executed with--app-storeoption.
Development
- Remove attribute
idfaDeclarationfromAppStoreVersion.Relationships. - Update App Store Connect API mock response for App Store Version.
The highlight of this release is added support for phased releases when publishing application to App Store Connect, which was added in PR #402.
Features
- Add new actions to work with phased releases in App Store Connect (PR #402):
app-store-connect app-store-version-phased-releases enableapp-store-connect app-store-version-phased-releases set-stateapp-store-connect app-store-version-phased-releases cancelapp-store-connect app-store-versions phased-release
- Update actions
app-store-connect builds submit-to-app-storeandapp-store-connect publishsupport enabling and disabling releasing App Store version in phases. PR #402
Documentation
- Add documentation for new action group (PR #402):
app-store-connect app-store-version-phased-releases
- Update documentation for action groups (PR #402):
app-store-connect builds submit-to-app-storeapp-store-connect publish
- Add documentation for actions (PR #402):
app-store-connect app-store-version-phased-releases enableapp-store-connect app-store-version-phased-releases set-stateapp-store-connect app-store-version-phased-releases cancelapp-store-connect app-store-versions phased-release
Bugfixes
- Fix App Store Connect API responses deserialization for cases when resource contains an empty relationship. PR #401
- Fix globbing files using current path pattern. PR #403
Development
- Add missing attributes and relationships to
codemagic.apple.resources.Appandcodemagic.apple.resources.Build. PR #383 - Define new enumerations
codemagic.apple.resources.enums.BuildAudienceTypeandcodemagic.apple.resources.enums.SubscriptionStatusUrlVersion. PR #383 - Add new model definition
codemagic.apple.resources.AppStoreVersionPhasedRelease. PR #402 - Add new App Store Connect API resource manager
AppStoreVersionPhasedReleasesthat implements HTTP client methods to work with App Store version phased releases. PR #402 - Add new HTTP client methods
read_app_store_version_phased_releaseandread_app_store_version_phased_release_datato App Store Connect API resource managerAppStoreVersions. PR #402 - Refactor
BuildsActionGroupofAppStoreConnectby moving methodssubmit_to_testflightandsubmit_to_app_storealong used private methods to dedicated action classesSubmitToTestFlightActionandSubmitToAppStoreActionrespectively. Python API via parentAppStoreConnectclass remains identical to what it was. PR #402 - Update public methods in
ResourceManagerMixinto take bothResourceIdandResourceinstances as methods arguments where only IDs were allowed before. PR #402
Improvements
- Remove usages of deprecated datetime properties on
x509.Certificateinstances. PR #399
Bugfixes
- Fix actions
firebase-app-distribution get-latest-build-versionandfirebase-app-distribution releases listto support releases with non-integer build version. PR #397
Development
- CI: Use test matrix to define Python versions in GitHub actions test workflows. PR #396
This version reverts changes that were introduced in 0.50.4 as they did not have intended effect. PR #395
Bugfixes
- Fix
app-store-connect publishaction getting stuck while binary is being uploaded usingaltool. PR #394
Bugfixes
- Remove deprecated attributes and relationships for App Store Connect App data structure. PR #392
availableInNewTerritoriesattribute,availableTerritoriesandpricesrelationships.
Features
- Allow custom export options in export options properly list for
xcode-project build-ipaactions. PR #391
Bugfixes
- Fix error handling for corrupt Xcresult parsing in
xcode-projectactions. PR #390
Features
- Add new actions to work with bundle identifier capabilities PR #388:
app-store-connect bundle-ids capabilitiesto list the capabilities that are enabled for identifier,app-store-connect bundle-ids enable-capabilitiesto enable capabilities for identifier,app-store-connect bundle-ids disable-capabilitiesto disable capabilities for identifier.
This release contains changes from PR #386 and PR #387.
Features
- Unify
app-store-connectcommand line API experience by gathering similar actions under respective action groups. - New action groups were added to group similar actions together:
app-store-connect bundle-ids,app-store-connect certificates,app-store-connect devices,app-store-connect profiles.
Deprecations The following actions are deprecated and show a warning message when invoked:
app-store-connect list-builds(replaced byapp-store-connect builds list),app-store-connect create-bundle-id(replaced byapp-store-connect bundle-ids create),app-store-connect delete-bundle-id(replaced byapp-store-connect bundle-ids delete),app-store-connect get-bundle-id(replaced byapp-store-connect bundle-ids get),app-store-connect list-bundle-id-profiles(replaced byapp-store-connect bundle-ids profiles),app-store-connect list-bundle-ids(replaced byapp-store-connect bundle-ids list),app-store-connect create-certificate(replaced byapp-store-connect certificates create),app-store-connect delete-certificate(replaced byapp-store-connect certificates delete),app-store-connect get-certificate(replaced byapp-store-connect certificates get),app-store-connect list-certificates(replaced byapp-store-connect certificates list),app-store-connect list-devices(replaced byapp-store-connect devices list),app-store-connect register-device(replaced byapp-store-connect devices register),app-store-connect create-profile(replaced byapp-store-connect profiles create),app-store-connect delete-profile(replaced byapp-store-connect profiles delete),app-store-connect get-profile(replaced byapp-store-connect profiles get),app-store-connect list-profiles(replaced byapp-store-connect profiles list).
Development
- Decorator
@actionsignature was changed. Optional keyword argumentdeprecated_alias: strwas replaced by optionaldeprecation_info: ActionDeprecationInfowhich holds both version in which the action was deprecated, and the deprecated name of the action. - Decorator
@actiondefinition was moved fromcodemagic.cli.cli_apptocodemagic.cli.action. It is still accessible from packagecodemagic.clias before.
Documentation
- Remove documentation of deprecated actions:
app-store-connect list-builds(replaced byapp-store-connect builds list),app-store-connect create-bundle-id(replaced byapp-store-connect bundle-ids create),app-store-connect delete-bundle-id(replaced byapp-store-connect bundle-ids delete),app-store-connect get-bundle-id(replaced byapp-store-connect bundle-ids get),app-store-connect list-bundle-id-profiles(replaced byapp-store-connect bundle-ids profiles),app-store-connect list-bundle-ids(replaced byapp-store-connect bundle-ids list),app-store-connect create-certificate(replaced byapp-store-connect certificates create),app-store-connect delete-certificate(replaced byapp-store-connect certificates delete),app-store-connect get-certificate(replaced byapp-store-connect certificates get),app-store-connect list-certificates(replaced byapp-store-connect certificates list),app-store-connect list-devices(replaced byapp-store-connect devices list),app-store-connect register-device(replaced byapp-store-connect devices register),app-store-connect create-profile(replaced byapp-store-connect profiles create),app-store-connect delete-profile(replaced byapp-store-connect profiles delete),app-store-connect get-profile(replaced byapp-store-connect profiles get),app-store-connect list-profiles(replaced byapp-store-connect profiles list).
- Add documentation for new action groups:
app-store-connect bundle-ids,app-store-connect certificates,app-store-connect devices,app-store-connect profiles.
- Update documentation for action groups:
app-store-connect builds.
- Add documentation for actions:
app-store-connect builds list(used to beapp-store-connect list-builds)app-store-connect bundle-ids create(used to beapp-store-connect create-bundle-id)app-store-connect bundle-ids get(used to beapp-store-connect get-bundle-id)app-store-connect bundle-ids list(used to beapp-store-connect list-bundle-ids)app-store-connect bundle-ids profiles(used to beapp-store-connect list-bundle-id-profiles)app-store-connect app-store-connect certificates create(used to beapp-store-connect create-certificate)app-store-connect app-store-connect certificates delete(used to beapp-store-connect delete-certificate)app-store-connect app-store-connect certificates get(used to beapp-store-connect get-certificate)app-store-connect app-store-connect certificates list(used to beapp-store-connect list-certificates)app-store-connect app-store-connect devices list(used to beapp-store-connect list-devices)app-store-connect app-store-connect devices register(used to beapp-store-connect register-device)app-store-connect app-store-connect profiles create(used to beapp-store-connect create-profile)app-store-connect app-store-connect profiles delete(used to beapp-store-connect delete-profile)app-store-connect app-store-connect profiles get(used to beapp-store-connect get-profile)app-store-connect app-store-connect profiles list(used to beapp-store-connect list-profiles)
This release contains changes from PR #382
Features
- Speed improvements for
app-store-connectactionsget-latest-testflight-build-number,get-latest-app-store-build-numberandapp-store-connect get-latest-build-numberin case the application has a lot of versions in App Store Connect.
Development
- Add new App Store Connect API Client methods:
codemagic.apple.app_store_connect.apps.Apps.list_app_store_versions_datato fetch application's App Store versions aslist[dict],codemagic.apple.app_store_connect.versioning.AppStoreVersions.read_build_datato fetch build of App Store version asdict,codemagic.apple.app_store_connect.versioning.PreReleaseVersions.list_datato fetch pre-release versions aslist[dict],codemagic.apple.app_store_connect.versioning.PreReleaseVersions.list_builds_datato fetch builds of pre-release version aslist[dict].
- Move implementations of latest build number actions from
codemagic.tools.AppStoreConnectto dedicated classes and plug them back in as mixins.
Bugfixes
- Fix error handling for invalid App Store Connect API private keys for
app-store-connectactions. PR #381
This PR contains changes from PR #380
Features
- Add new actions:
app-store-connect app-store-versions getto show App Store Version information. See official API method documentation.app-store-connect review-submission-items deleteto remove existing review submission item from App Store Connect. See official API method documentation.app-store-connect review-submissions itemsto list review submission items of specified review submission. See official API method documentation.
- Add option
--localeto actionapp-store-connect app-store-versions localizationsto filter retrieved localizations by given specified locales. - Improve error message for action
app-store-connect review-submission-items createif creating review submission item fails because required values are missing for application default locale on respective App Store Version.
Bugfixes
- Fix invoking action
app-store-connect review-submission-items createfrom command line. - Do not require device IDs for action
app-store-connect create-profilewhen not creating development or Ad Hoc provisioning profiles.
Development
- Add new module
codemagic.utilities.case_conversionwith public functionssnake_to_camelandcamel_to_snake. - Add new client method
list_itemsto review submissions resource manager insrc/codemagic/apple/app_store_connect/versioning/review_submissions.pyto retrieve submission items list from App Store Connect. AppStoreConnectErrorexceptions now have fieldapi_error: Optional[ErrorResponse]to store App Store Connect API error information.
Documentation
- Update documentation for action groups
app-store-connect app-store-versions,app-store-connect review-submissions,app-store-connect review-submission-items.
- Add documentation for actions:
app-store-connect app-store-versions get,app-store-connect review-submissions items,app-store-connect review-submission-items delete.
- Update documentation for actions:
app-store-connect app-store-versions localizations,app-store-connect review-submission-items create,app-store-connect create-profile.
Bugfixes
- Fail gracefully with informative error message if CLI args are passed with invalid encoding. PR #376
- Do not require
--device-idsfor actionapp-store-connect create-profilewhen not creating development or ad-hoc provisioning profiles. PR #377 - Fix error handling if device IDs are missing and development or ad-hoc provisioning profiles are being created (applies to actions
app-store-connect create-profileandapp-store-connect fetch-signing-files). PR #377 - Fix resolving certificate type for Mac Catalyst and In-House provisioning profiles. PR #378
- Improve error handling for
google-playactions. Captureoauth2client.clienterrors in Google Play API client so that the action fails gracefully with appropriate error message. PR #379
Docs
- Update option
--device-idsdocumentation for actionapp-store-connect create-profile. PR #377
Bugfixes
- Fix handling of relative certificate path patterns for action
keychain add-certificates. PR #374
Bugfixes
- Fix actions
firebase-app-distribution get-latest-build-versionandfirebase-app-distribution releases listfor cases when specified application does not have any releases available. PR #373
Bugfixes
- Update action
xcode-project use-profiles. Fix assigning provisioning profiles to Xcode targets that have SDK specific provisioning profile specifiers. PR #371 - Do not crash
xcode-projectactionsclean,build-ipaandrun-testsifxcprettyis not installed. PR #372
Changes in this release are from PR #370 and add Python 3.12 compatibility.
PEP-632 deprecated distutils module, and it was removed entirely in Python 3.12. This release ensures that distutils module is not used any more.
None of the breaking changes have an effect on command line usage, only the Python API is affected.
Development
- Breaking: Type of
codemagic.models.Xcode.versionproperty was changed. Instead ofdistutils.version.LooseVersionit is nowpackaging.version.Version. - Breaking: Type of
codemagic.models.simulator.Runtime.runtime_versionproperty was changed. Instead ofdistutils.version.LooseVersionit is nowpackaging.version.Version.
Features
- Show full executed command in error output if action execution fails unexpectedly. PR #364
- Show full exception tracktrace in STDOUT logs if
--verboseoption is set. PR #364
Bugfixes
- Fix handing of required arguments to
google-playif they are defined as empty strings (--track,-tracks,--package-name,--source-trackand--target-track). PR #363 - Fix looking for errors from Xcode build logs as part of
xcode-project build-ipaif the logs contain byte sequences that cannot be decoded. PR #365
Development
- Support iterating over binary file descriptors with
codemagic.utilities.backwards_file_reader.iter_backwards. PR #365
Bugfixes
- Fix Google Play release promotion with action
google-play tracks promote-releasefor releases that have release notes. PR #361
Development
- Add GitHub Actions job to run tests with Python 3.12. PR #362
Features
- Add new option
--max-find-build-waitto actionapp-store-connect publishto configure maximum waiting time to discover uploaded build from App Store Connect before failing publishing. Defaults to 10 minutes. PR #355
Docs
- Add option
--max-find-build-waitdocumentation for actionapp-store-connect publish. PR #355 - Update option
--cancel-previous-submissionsdocumentation for actionsapp-store-connect builds submit-to-app-storeandapp-store-connect publish. PR #353
Bugfixes
- Support Apple Vision Pro devices in App Store Connect API read device information and list devices endpoints. This is done by declaring
APPLE_VISION_PROdefinition in enumerationcodemagic.apple.resources.enums.DeviceClass. PR #357
Bugfixes
- Fix initializing
codemagic.models.application_package.Ipaobjects for big binaries (exceeding 4GB in size). PR #356
Bugfixes
- Ensure that build for correct platform is looked up from App Store Connect after initial upload completes using
app-store-connect publish. PR #352
Additions and changes from pull request #349. Resolves issue #344.
Features
- Add new option
--include-versiontoapp-store-connectactionsget-latest-build-number,get-latest-app-store-build-numberandget-latest-testflight-build-number. If specified, the action outputs matched build's version string in addition to build number.
Bugfixes
- Output valid
JSONstring withapp-store-connectactionsget-latest-build-number,get-latest-app-store-build-numberandget-latest-testflight-build-numberif--jsonoption is specified.
Docs
- Documentation was updated for actions:
app-store-connect get-latest-build-number,app-store-connect get-latest-app-store-build-number,app-store-connect get-latest-testflight-build-number.
Features
- Log out processed build and its beta detail information before submitting it to App Store or TestFlight. PR #347
Additions and changes from pull request #345.
Features
- Add a new action
google-play tracks promote-releaseto promote a release from one Google Play release track to another.
Development
- Define a new common argument type
bounded_numberfor CLI usage that can be used to load floats and integers from CLI inputs within specified ranges. - Add a new client method
update_trackto update release track in Google Play API clientcodemagic.google_play.api_client.GooglePlayDeveloperAPIClient.
Documentation
- Update documentation for action group
google-play tracks. - Add documentation for action
google-play tracks promote-release.
Additions and changes from pull request #340. Resolves issue #339.
Features
- Support submitting macOS packages to TestFlight using
app-store-connect publish --testflight. - Add new action
app-store-connect builds beta-detailsto show beta detail information for specific build. - Waiting for App Store Connect build processing also waits for beta builds details to be processed before returning.
Development
- Add new client method
read_beta_detailto builds resource manager insrc/codemagic/apple/app_store_connect/builds/builds.py. - Add new definitions for App Store Connect models:
BuildBetaDetailfor https://developer.apple.com/documentation/appstoreconnectapi/buildbetadetail,ExternalBetaStateenumeration for https://developer.apple.com/documentation/appstoreconnectapi/externalbetastate,InternalBetaStatefor https://developer.apple.com/documentation/appstoreconnectapi/internalbetastate.
Documentation
- Add documentation for action
app-store-connect builds betat-details.
Special thanks for contribution to @nilsreichardt.
Bugfixes
- Fix iOS application package abstraction layer in
codemagic.models.application_package.Ipato support large archives (exceeding 4GB in size). PR #342
Bugfixes
- Do not require certificate private key to show certificate information using
app-store-connect get-certificateif certificate is not saved to disk. PR #337
Features
- Add
--omit-sdkoption to actionxcode-project run-teststo exclude-sdkflag from being passed to underlyingxcodebuild testcommand. PR #335
Changes in this release improve app-store-connect register-device action by allowing to pass multiple UDIDs from different sources.
None of the breaking changes have an effect on command line usage, only the Python API of is affected.
Features
- Update
app-store-connect register-deviceaction:- The
--udidargument now accepts multiple UDIDs. - The
--udidargument now accepts a file or an environment variable as a source for UDIDs. - Introduce
--ignore-registration-errorsflag to continue registering devices despite errors - Introduce short flags:
-nflag for the device name,-uflag for the UDIDs.
- The
Development
AppStoreConnect.register_deviceaction method update:- It now accepts a list of UDIDs for registration at the keyword argument
device_udids. - Breaking:
AppStoreConnect.register_devicenow returns a list of registered devices.
- It now accepts a list of UDIDs for registration at the keyword argument
- Add
ignore_registration_errorskeyword argument to continue registering devices despite errors.
Documentation
- Update documentation for
app-store-connect register-deviceaction:- Add new short flags:
-nand-u. - Add the description for the new
--ignore-registration-errorsoption. - Update the action description.
- Add new short flags:
Development
- Format Python source code with Black. PR #322
- Check Python linting rules with Ruff. This replaces Flake8 and isort checks. PR #322
Deprecations
- Method
list_capabilility_idsofcodemagic.apple.app_store_connect.provisioning.BundleIdsis deprecated and shows a deprecation warning on calls. Uselist_capability_idsof the same class instead. PR #326
Development
- Define
deprecateddecorator incodemagic.utilities.decoratorsto mark functions and methods as obsolete. PR #326
Features
- Add support for visionOS runtime. PR #325
Bugfixes
- Do not require
releaseNotesfrom Firebase App Distribution release responses. PR #323
Dependencies
- Set lower bound version limit
>= 2.84.0togoogle-api-python-clientPython dependency in order to comply with Firebase App Distribution APIs. PR #322
Development
- Add interface to declare aliases for deprecated actions. PR #187
Features
- Introduce
firebase-app-distributiontool with the actions:firebase-app-distribution releases listaction to list releasesfirebase-app-distribution get-latest-build-versionto get a version number for the latest release build
Development
- Introduce action methods:
FirebaseAppDistribution.list_releasesFirebaseAppDistribution.get_latest_build_version
Tests
- Coverage for Firebase client
FirebaseClient - Coverage for action methods:
FirebaseAppDistribution.list_releasesandFirebaseAppDistribution.get_latest_build_version
Documentation
- Document
firebase-app-distributiontool - Document actions:
firebase-app-distribution releases listfirebase-app-distribution get-latest-build-version
Features
- Improve Python API for module
codemagic.tools.keychain. Allow passing passwords as strings in addition tocodemagic.tools.keychain.PasswordforKeychainmethods. PR #315
Bugfixes
- Do not require
detailattribute from App Store Connect API error responses. PR #316
Development
- Marginal changes to start using timezone aware datetimes instead of timezone unaware datetimes. PR #313
Dependencies
- Remove upper version limit from
cryptographydependency. PR #309
Docs
- Documentation was updated for actions:
app-store-connect get-latest-build-number,app-store-connect get-latest-app-store-build-number,app-store-connect get-latest-testflight-build-number.
Bugfix
- Improve action
xcode-project use-profilesstability so that different invocation with the same set of provisioning profiles will always yield the same changeset to Xcode project settings. PR #308
Bugfix
- Update flag
--cancel-previous-submissionsfor theapp-store-connect builds submit-to-app-storeaction to wait for Apple's confirmation that the submission is cancelled before attempting to submit a new build.
This is an enhancement release to further streamline the App Store review submission automation capabilities.
Additions and changes from pull request #289. Resolves issue #289.
Features
- Add new action
app-store-connect apps list-review-submissionsto list existing review submissions in the App Store for a specific application. See official API method documentation. - Add new action
app-store-connect apps cancel-review-submissionsto cancel existing review submissions in the App Store based on their type for a specific app. Uses the already existingapp-store-connect review-submissions cancelaction internally that allows to set the submission status tocanceledusingPATCH. See official API method documentation. - Add new action
app-store-connect builds expireto expire a specific build that has been uploaded to App Store Connect. Modifies the existing build resource to an expired status usingPATCH. See official API method documentation. - Add new action
app-store-connect apps expire-buildsto expire all builds uploaded to App Store Connect except the given build(s) for the specific application. Uses the aforementionedapp-store-connect builds expireaction internally. - Add new action
app-store-connect apps expire-build-submitted-for-reviewto expire build in App Store Connect that has been submitted to review and has not beenApprovedfor a specific application. Uses the aforementionedapp-store-connect builds expireaction internally. - Add new action
app-store-connect builds appto get the application information based on the given build. - Add flags
--cancel-previous-submissionsand--expire-build-submitted-for-reviewto theapp-store-connect publishaction. - Add flag
--beta-review-statetoapp-store-connect apps buildsandapp-store-connect list-buildsactions for filtering builds based on their beta review state. - Add flag
--cancel-previous-submissionsto theapp-store-connect builds submit-to-app-storeaction. - Add flag
--expire-build-submitted-for-reviewto theapp-store-connect builds submit-to-testflightaction.
Docs
- Documentation updated for existing actions:
- new option
--beta-review-statefor the actionapp-store-connect apps builds - new option
--cancel-previous-submissionsfor the actionapp-store-connect builds submit-to-app-store - new option
--expire-build-submitted-for-reviewfor the actionapp-store-connect builds submit-to-testflight - new option
--beta-review-statefor the actionapp-store-connect list-builds - new options
--expire-build-submitted-for-reviewand--cancel-previous-submissionsfor the actionapp-store-connect publish - description update for the
app-store-connect review-submissions cancelaction
- new option
- Documentation added for new actions:
app-store-connect builds appapp-store-connect builds expireapp-store-connect apps expire-buildsapp-store-connect apps expire-build-submitted-for-reviewapp-store-connect apps cancel-review-submissionsapp-store-connect apps list-review-submissions
Bugfixes:
- Update action
app-store-connect build-ipato useCODE_SIGN_STYLE=Manualxcarg for underlyingxcodebuild archivecommand when building with Xcode 14+ and none of the signing files are managed by Xcode. PR #302 - Make App Store and prerelease version comparisons more robust for
app-store-connectactions. PR #306
Dependencies
- Declare direct Python dependency for package
packaging. Previously it was indirectly required bysetuptools. PR #306
This release includes changes from PR #304.
Features
- Add option to include only expired or not expired builds to the latest build number lookup with action
app-store-connect get-latest-testflight-build-number.
Bugfixes
- Avoid using included resources when listing data with App Store Connect API for actions that detect the latest build number. When listing App Store or Prerelease (TestFlight) versions with included builds, then not all existing builds were present in the response. Fixed actions:
app-store-connect get-latest-testflight-build-number,app-store-connect get-latest-app-store-build-numberandapp-store-connect get-latest-build-number
Development
- Remove unused methods:
AppStoreVersions.list_with_include,PreReleaseVersions.list_with_include.
- New API methods:
PreReleaseVersions.list,PreReleaseVersions.list_builds.
Development
- Regenerate
poetry.lockwith updated dependencies for development environments. PR #301 - Update type hints to be compatible with
mypyversion0.991. PR #301 - Marginal code formatting changes. PR #301
This is a bugfix release including changes from PR #300.
- Fixes the actions that detect the latest build number from App Store Connect for App Store or Pre Release (TestFlight) versions:
app-store-connect get-latest-testflight-build-number,app-store-connect get-latest-app-store-build-numberandapp-store-connect get-latest-build-number.
Bugfix
- Support Python 3.11.1 PR #295.
This release contains changes from PR #290.
CI
- Store releases only on PyPI and GitHub releases.
- Include wheel with fixed name under GitHub release assets so that latest version could be accessed with permalink.
This release updates the current version of bundletool, as it is outdated, and issues potentially concerning it have risen for users with newer projects. Reported in issue #286.
Dependencies
- Update
bundletoolversion from0.15.0to1.13.1. PR #287
Bugfix
- Remove mutable default value from
codemagic.models.Keystorefieldcertificate_attributes. PR #284
Bugfix
- Fix regression from PR #283.
Features
- Update action
xcode-project use-profilesargument--custom-export-optionsto accept export options definitions from file or environment variable references. If the value is not defined using CLI flag, it is automatically checked from environment variableXCODE_PROJECT_CUSTOM_EXPORT_OPTIONSby default. PR #283
Features
- Add action
app-store-connect get-latest-build-numberthat finds the highest build number across both TestFlight and App Store builds. PR #281
Bugfix:
- Fix action
xcode-project detect-bundle-idfor cases whenxcodebuild -showBuildSettingsoutput does not havePRODUCT_BUNDLE_IDENTIFIERentry for some build settings. PR #280
Improvements:
- Action
xcode-project use-profilesfails in case active Ruby installation does not havexcodeprojgem available. Should that happen, show appropriate and actionable error message. PR #277
Bugfix:
- Do not throw
AssertionErrorfromCertificate.from_p12in case the given PKCS#12 container does not contain a certificate. Raise aValueErrorwith appropriate error message instead. PR #274.
Development
- Regenerate
poetry.lockwith updated dependencies for development environments. PR #275
This release includes changes from PR #271.
Docs
- Update documentation for action
xcode-project use-profilesoption--custom-export-options.
This release includes changes from PR #269.
Bugfix:
- Previously non-encrypted private keys and PKCS#12 containers were treated equivalently to those that were encrypted with empty string. Now empty password for non-encrypted secret will yield an error, and vice-versa, not providing password for secret that is encrypted with empty string will also fail with encryption error.
Dependencies:
- Remove direct
pyOpenSSLdependency.
Development:
- Replace
OpenSSL.cryptousages with alternatives fromcryptographylibrary. - Deprecate initialization of
codemagic.models.CertificatefromOpenSSL.crypto.X509instances. For now this will issue a warning, but will be fully removed in future versions.
Dependencies:
- Set upper bound version limit
<38.0.0tocryptographydependency. PR #268
This release includes changes from PR #266.
Features:
- Add
xcode-project show-build-settingsaction. It outputs Xcode project build setting usingxcodebuild -showBuildSettingscommand. - Update
xcode-project build-ipaaction to runxcodebuild -showBuildSettingsbeforexcodebuild archiveto capture Xcode project build settings. The output of build settings is hidden by default, but shown if--verboseflag is set.
This is a bugfix release to address regression from PR #261.
Bugfix
- Fix setting code signing settings for unit test targets if matching host application target is not found. PR #262
Bugfix
- Set proper code signing settings on Xcode unit testing targets (targets with product type
com.apple.product-type.bundle.unit-test) usingxcode-project use-profileswhen appropriate code signing information is present. PR #261
Features
- Action
app-store-connect fetch-signing-fileswill create missing provisioning profiles so that all eligible team code signing certificates are included in it. PR #257
Bugfixes
- Configure proper signing info settings for Xcode UI testing targets with action
xcode-project use-profilesprovided that suitable signing files exist. PR #258
Docs
- Replace dead docstrings for
Profiles Profiles.list_device_ids,Profiles.list_certificate_ids,Profiles.get_bundle_id_resource_idwith pointers to the resources. Reported in issue #237. PR #259
Bugfixes
- Show error message when no matching test device is found in the Apple Developer Portal when creating an Ad Hoc or development provisioning profile. PR #256
Development:
- Support file-like objects for
codemagic.utilities.backwards_file_reader.iter_backwardsin addition to file paths. PR #255
Development:
- Save timestamp along with other failed App Store Connect HTTP request info. PR #254
Features:
- Add new action
android-keystore certificateto show certificate information for specific alias in the keystore. PR #253
Features:
- Tool
app-store-connectcan now retry App Store Connect API requests that fail with status 5xx (server error). Number of retries can be configured by command line option--api-server-error-retries, or respective environment variableAPP_STORE_CONNECT_API_SERVER_ERROR_RETRIES. PR #249
Development
- Save unexpected exception information and stacktrace to
$TMPDIR/codemagic-cli-tools/exceptions/yyyy-mm-dd/. PR #248 - Save unsuccessful App Store Connect HTTP request and response information to
$TMPDIR/codemagic-cli-tools/failed-http-requests/yyyy-mm-dd/. PR #248
Docs
- Update tool
app-store-connectdocs with--api-server-error-retriesoption. PR #250 - Add the changelog URL to the
pyproject.tomlproject file so that the changelog reference is included under project links in PyPI. PR #247
This is a bugfix release including changes from PR #246.
Bugfixes
- Fix matching a profile in
app-store-connect fetch-signing-filesfor cases wheretypeis defined asMAC_APP_DIRECT.
This is a bugfix release including changes from PR #245.
Bugfixes
- Fix
xcode-project use-profilesfor cases when bundle identifier is defined in information property list files. Add fallback bundle identifier detection from Info.plist file to code signing setup script ifPRODUCT_BUNDLE_IDENTIFIERis not resolved from build configuration.
This release includes changes from PR #244. The goal of this release is to migrate to PEP 518 compliant build system by using Poetry dependency management and packaging tool.
Development
- Migrate project dependency management from Pipenv to Poetry.
- Add
pyproject.tomlproject file to specify dependencies, project packaging information and code style requirements. Flake8 configuration remains in.flake8as it does not supportpyproject.tomlyet. - Changes to GitHub actions:
- Update caching configuration.
- Replace
pipenvusages in GitHub action with Poetry.
- Changes to Codemagic workflows:
- In
releaseworkflow run CI checks before building wheels and distribution. Use Poetry for building and PyPI releases. - Use Poetry in
testworkflow instead of Pipenv. - Define
release-testworkflow to build and release binary to PyPI test mirror.
- In
- Project files
setup.cfg,setup.py,PipfileandPipfile.lockwere removed. - Add
.pre-commit-config.yamlwhich definespre-commithooks. - Move Ruby script
bin/code_signing_manager.rbtosrc/codemagic/scripts/code_signing_manager.rb. This script will not be added to system$PATHat the time of package installation anymore. Consequence of this is that the actionxcode-project use-profileswill now use the script which is bundled with installation, instead of what is available globally in the system.
Docs
- Update
README.md:- update example code snippets that are out of date,
- include all installed CLI tools to installed tools list,
- add instructions for setting up development environment.
This release includes changes and fixes from PR #243.
Bugfixes
- Fix properties
not_afterandnot_beforeofcodemagic.models.Certificateto work withpyOpenSSLversions<=19.1.0.
Development
- Remove type stubs for package
cryptography. - Add tuple
SUPPORTED_PUBLIC_KEY_TYPESto modulecodemagic.models.private_key. - Remove
OpenSSL.crypto.X509usages fromcodemagic.models.Certificateinternals by replacing them with functionality fromcryptography.x509.Certificate.
Features:
- Action
xcode-project run-testswill now respect retried testcase outcome. In case the initial testcase execution fails, but retrying is turned on (by-retry-tests-on-failureXcode testing flag) and subsequent testcase run turns out to be successful, then this testcase will not be considered as failed in the context of whole test suite. PR #242
Dependencies:
- Remove upper bound version limit
<37fromcryptographydependency, but exclude version37.0.0as it conflicts withpyOpenSSL. PR #241 - Remove upper bound version limit from
google-api-python-clientas all used functionality works also with recent versions. PR #241
Bugfixes:
- Fix
ProvisioningProfile.application_identifierproperty for profiles that list associated application identifiers. PR #240
Features:
- Sanitize environment variable values in
altoolerror logs when publishing to App Store Connect usingapp-store-connect publishfails. PR #238
Bugfixes:
- Fix handling invalid argument errors for grouped CLI arguments that are defined via environment variables. PR #239
Bugfixes:
- Fix
AttributeErrorthat can occur on review submission creation error handling as part of actionapp-store-connect builds submit-to-app-store. PR #236
Development
- Make type interface more strict for App Store Connect API client and resource definitions. PR #221
- Improve
ResourceManagerMixintype interface. PR #235
Bugfixes:
- Fix
AttributeErrorexceptions when constructing URLs for App Store Connect API requests to list certificates, certificate IDs, devices or device IDs for givenProfileinstance. PR #221
Fixes
- Action
xcode-project use-profilesfailed to assign code signing information to build configurations that inherited build settings fromxcconfigfiles. Reported in issue #220. PR #232
Development
- Use default values for all arguments in
Keychain.add_certificatesandXcodeProject.use_profiles. PR #226
Dependencies
This release includes changes from PR #227.
Apple has deprecated the Create an App Store Version Submission and replaced it by Review Submissions API. Changes included in this release update logic driving App Store publishing as part of actions app-store-connect publish and app-store-connect builds submit-to-app-store.
Features
- Add new action
app-store-connect review-submissions createto create new review submission request for application's latest App Store Version. - Add new action
app-store-connect review-submissions getto show review submission information. - Add new action
app-store-connect review-submission-items createto add contents to review submission for App Store review request. - Add new action
app-store-connect review-submissions confirmto confirm pending review submission for App Review. - Add new action
app-store-connect review-submissions cancelto discard review submission from App Review.
Development
- Breaking: Return type for
AppStoreConnect.submit_to_app_storechanged. Instead ofAppStoreVersionSubmissionit now returns tuple(ReviewSubmission, ReviewSubmissionItem). - Add new resource manager properties
review_submissionsandreview_submissions_itemstoAppStoreConnectApiClient. - Update
AppStoreVersionmodel with optional relationshipsappClipDefaultExperienceandappStoreVersionExperiments. - Define new
ReviewSubmissionStateandReviewSubmissionItemStateenumerations for App Store Connect API resources. - Add model definition for resource
ReviewSubmission. - Add model definition for resource
ReviewSubmissionItem. - Add method new methods to
AppStoreConnect:cancel_review_submission,confirm_review_submission,create_review_submission,create_review_submission_item.
Tests
- Update mock for
AppStoreVersionresource test.
Docs
- Add docs for app-store-connect
review-submission-items create - Add docs for app-store-connect
app-store-connect review-submissions cancel - Add docs for app-store-connect
app-store-connect review-submissions confirm - Add docs for app-store-connect
app-store-connect review-submissions create - Add docs for app-store-connect
app-store-connect review-submissions get
This release includes changes from PR #224.
Features
- Add option
--archive-methodto actionxcode-project use-profilesto limit code signing setup for specific profile type only. If archive method is not given, the action will attempt to use all profiles as it worked before.
Development
- Breaking: Definitions of enumeration base classes
ResourceEnumandResourceEnumMetawere moved from modulecodemagic.apple.resources.enumstocodemagic.models.enums. ArchiveMethodenumeration parent class was changed from plainenum.EnumtoResourceEnum.ArchiveMethodclass has new factory methodfrom_profile(profile: ProvisioningProfile).- Method
XcodeProject.use_profileshas new optional keyword argumentarchive_method: Optional[ArchiveMethod] = None.
Docs
- Update docs for action
xcode-project use-profiles.
Improvements
- Speed up
xcresultparsing forxcode-projectactionsrun-tests,junit-test-resultsandtest-summary. PR #223
Fixes
- Allow defining
distributionBundleIdentifierexport option by--custom-export-optionsforxcode-project use-profiles. PR #218
Dependencies
- Add upper bound to
cryptographyPython dependency (version<37.0.0) to persist compatibility with currently availablepyOpenSSLversion. PR #217
Changes in this release improve usability of tool google-play. Updates are from PR #215 and PR #216.
Breaking
None of the breaking changes have an effect on command line usage, only the Python API of is affected.
- Method signature changes:
- Signature of
GooglePlay(toolgoogle-play) initialization was changed:- positional argument
package_namewas removed, - keyword argument
log_requestswas removed, - keyword argument
json_outputwas removed, - positional argument
credentialsaccepts now Google Play service account credentials both as JSONstrand parseddict.
- positional argument
- Signature of
GooglePlayDeveloperAPIClientinitialization was changed and simplified:- positional argument
resource_printerwas removed, - positional argument
package_namewas removed.
- positional argument
GooglePlaymethodget_latest_build_numberrequirespackage_nameargument,GooglePlayDeveloperAPIClientmethodscreate_editanddelete_editrequirepackage_nameargument,- property
max_version_codeofTrackwas converted into a methodget_max_version_code().
- Signature of
- CLI argument definitions for
google-playwere updated and moved fromcodemagic.tools.google_playtocodemagic.tools.google_play.arguments. - Removed definitions:
- enumeration
codemagic.google_play.resources.TrackNamewas removed. - class
codemagic.google_play.ResourcePrinterwas removed. - exception
codemagic.google_play.VersionCodeFromTrackErrorwas removed. - removals in
GooglePlayDeveloperAPIClient:- method
get_track_informationwas removed, - property
servicewas removed.
- method
- enumeration
Features
- Update tool
google-play:- Allow using custom release tracks with action
google-play get-latest-build-number. - Add new action
google-play tracks getto get information about specific release track for given package name. - Add new action
google-play tracks listto get information about all available release tracks for given package name.
- Allow using custom release tracks with action
Development
- Module
codemagic.tools.google_playwas refactored by splitting single source file into a subpackage.- Define actions group
TracksActionGroupfor working with tracks. - Move
get_latest_build_numberaction / method implementation into separate subclassGetLatestBuildNumberAction.
- Define actions group
- Rework the internals of
GooglePlayDeveloperAPIClient:- add context manager to handle
editlifecycle so that callers don't have to take care of deletion afterwards, - add new methods
get_trackandlist_tracks, - service resource instance was removed from class instance as it wasn't thread safe.
- add context manager to handle
- Update
mypyversion. - Add more tests for
GooglePlaytool.
Docs
- Update docs for tool
google-play. - Update docs for action
google-play get-latest-build-number. - Add docs for action group
google-play tracks. - Add docs for action
google-play tracks get. - Add docs for action
google-play tracks list.
Fixes
- Action
google-play get-latest-build-numbercrashed whenTrackresponse from Google Play Developer API did not specifyincludeRestOfWorldfield forCountryTargeting. PR #214
This release includes changes from PR #213 to improve command line usage and Python client usability for managing Android keystores.
Breaking
- Remove key password option (specified by
-l,--ks-key-passor--key-pass) from actionandroid-keystore verifyas it is not used.
Features
- Add new action
android-keystore certificatesto list information about certificates included in the keystore.
Development
- Breaking. Remove
key_passwordkeyword argument fromAndroidKeystore.verify. - Breaking. Change signature of
Keytool.validate_keystore. Instead of takingkeystore: Keystoreas the argument, nowkeystore_path: pathlib.Path,keystore_password: strand,key_alias: strare taken. Method functionality remains intact. - Add new method
Keytool.get_certificates -> List[Certificate]to extract certificates from specified android keystore. - Add new convenience methods to
codemagic.models.Certificate:get_summary() -> Dictto generate JSON serializable dictionary containing information about the certificate.get_text_summary() -> strthat generates a printable and user-readable string representation of the certificate's information.
Docs
- Update documentation for tool
android-keystore. - Update documentation for action
android-keystore verify. - Add documentation for action
android-keystore certificates.
Fixes
- Return
TruefromCertificate.is_development_certificateproperty if the certificate is Mac Development code signing certificates, as those certificates are used to sign development versions of Mac apps. PR #212
Development
- Add properties
creation_dateandexpiration_datetoProvisioningProfileobject. PR #211
This is a bugfix release from PR #210 to fix problems with tool android-keystore that was first added in version 0.21.0.
Improvements
- Use better error message for keystore validation in case non-keystore file is passed for validation.
Fixes
- Fix debug keystore creation using action
android-keystore create-debug-keysotre. It was using invalid keyword argument to specify keystore path. - Make keystore path argument
--keystorerequired forandroid-keystore createandandroid-keystore verifyactions.
This is a bugfix release from PR #209.
Fixes
- Fix loading code signing entitlements from Xcode archives and iOS App Store Packages (
*.xcarchiveand*.ipafiles respectively) with Xcode 13.3+. A tool calledcodesignwhich is bundled with Xcode is used to extract code signing entitlements information from application packages. The version ofcodesignincluded in Xcode 13.3 came with some modifications that broke the flow which is used to collect code signing entitlements.
Development
- PEP 561 compliance. Include
py.typedmarker file to indicate that this package has inline type hints. PR #207
This release contains updates from PR #206.
Features
- Add new tool
android-keystoreto Android app code signing keystores. New actions are:android-keystore createto initialize new Android keystore,android-keystore create-debug-keystoreto initialize new debug Android keystore with default settings,android-keystore verifyto check that Android keystore alias and passwords are correct.
Development
- Add optional
envkeyword argument toCliProcess.executemethod to specify process specific environment variables. - Add dataclass
CertificateAttributesto store certificate issuer information. - Add dataclass
Keystoreto store keystore information. - Add new module
codemagic.shell_toolsto contain Python wrappers for command line utilities. - Add minimal Python wrapper for
keytoolcommand line utility incodemagic.shell_tools.Keytool.
Docs
- Add documentation for tool
android-keystore. - Add documentation for action
android-keystore create. - Add documentation for action
android-keystore create-debug-keystore. - Add documentation for action
android-keystore verify.
This release contains improvements from PR #205.
Features
- Add option
--p12-pathforapp-store-connectactionscreate-certificateandget-certificateto specify PKCS#12 container save path that can be used together with--saveto specify exact file path where the container is saved. It overrides default save location, which is configured by--certificates-dir.
Fixes
- Support certificates that do not have common name defined in subject.
Development
- Describe new common argument type
CommonArgumentType.non_existing_pathwhich asserts that specified file does not exist. - PKCS#12 support in
pyOpenSSLis deprecated andcryptographyAPIs should be used instead. Replace the deprecatedcrypto.load_pkcs12inCertificate.from_p12withcryptography'spkcs12.load_key_and_certificates. - Add new factory method
PricateKey.from_p12to load private key from PKCS#12 container. - Allow using
PrivateKeyinstances forAppStoreConnectmethods that takecertificate_keyargument. Before only instances ofTypes.CertificateKeyArgumentwere supported. - Support
DSAand elliptic curve private keys forPrivateKey.
This is a bugfix release from PR #204 to address the regression introduced in PR #203.
Fixes
- Fix export options plist generation with
xcode-project use-profilesin case provisioning profiles with wildcard identifiers (such as*orcom.example.*) were used.
Development
- Add new data container class
ProvisioningProfileAssignmentwhich can be used to track the Xcode project target onto which certain provisioning profile was assigned to. - Change
ExportOptionsfactory methodfrom_used_profiles(cls, used_profiles: Sequence[ProvisioningProfile]) -> ExportOptionstofrom_profile_assignments(cls, profile_assignments: Sequence[ProvisioningProfileAssignment]). This will persist the actual bundle identifiers of the Xcode targets when the property list constructed, instead of possibly using wildcard identifiers from provisioning profiles.
This release includes changes from PR #203 to improve usability and feedback from xcode-project use-profiles.
Features
- Improve
xcode-project use-profileslog output. Highlight Xcode targets for which code signing settings were not configured, but are likely necessary for successful build. - Add
--code-signing-setup-verbose-loggingoption to actionxcode-project use-profileswhich turns on detailed log output for code signing settings configuration.
Docs
- Update docs for
xcode-project use-profilesaction. Add documentation for option--code-signing-setup-verbose-logging.
Development
- Breaking. Remove dataclass
codemagic.models.matched_profiles.MatchedProfileand all its usages. - Breaking. Replace
ExportOptions.from_matched_profileswithExportOptions.from_used_profiles. Old method was relying on the removedMatchedProfileclass, while new method has more generic interface requiring only sequence ofProvisioningProfilesas arguments. - Breaking. Change command line interface for
code_signing_manager.rb:- Replace command line option
-u/--used-profileswith-r/--result-pathto better reflect the updated contents of result file. - Results saved into file specified by
--result-pathwill now include all found Xcode targets, including those that were not assigned provisioning profile. The targets for which matching provisioning profile was found and configured, the reference also includes the used provisioning profileuuid. - The saved JSON file structure what used to be
{profile_uuid: [<target_info>, ...]}is now[<target_info>, ...].
- Replace command line option
- Always multiplex
code_signing_manager.rbverbose log output to main file log. CodeSigningManager.use_profileslogs Xcode project targets for which provisioning profiles were not found, but are likely necessary for buildingipa.
Fixes
- Allow using
manageAppVersionAndBuildNumberas an export option when building withxcode-project build-ipa. PR #201
Fixes
- When creating new provisioning profiles as part of action
app-store-connect fetch-signing-filesinclude only eligible devices when creating the profiles. Before the action could fail for example in case when iOS development or Ad Hoc provisioning profile was created, but an Apple TV device was included as a create parameter. PR #200
Features
-
Change default behaviour for resolving certificate type from provisioning profile type. Map
IOS_APP_ADHOCprovisioning profile type toDISTRIBUTIONcertificate type instead ofIOS_DISTRIBUTION. "Apple Distribution" certificates can be used to sign any type of application (iOS, tvOS, Mac, Universal, etc.) and as a result fewer certificates are required. Applies to the following actions:app-store-connect fetch-signing-files,app-store-connect list-certificates.
This change is backwards compatible in the sense that existing matching
IOS_DISTRIBUTIONcertificates are still used forIOS_APP_ADHOCprovisioning profiles if found. PR #198
Development
- Behaviour of
CertificateType.from_profile_typewas changed:- calling it with
ProfileType.IOS_APP_STOREreturnsCertificateType.DISTRIBUTIONinstead ofCertificateType.IOS_DISTRIBUTIONas before. PR #198
- calling it with
This is a bugfix release to fix the regression introduced in v0.17.1.
Fixes
- Consider OpenSSH private keys for
app-store-connectargument--certificate-keyvalid again. Due to changes in PR #196 only PEM encoded keys were accepted as certificate keys, but OpenSSH keys are not fully compatible with the PEM standard, and should be allowed too. PR #197
Fixes
- Validate that App Store Connect API private key specified for
app-store-connecttool by argument--private-keyis a valid PEM encoded key. PR #196
Features
- When retrying
altoolcommands as part ofapp-store-connect publishaction, kill open Xcode processes before another attempt is made. It is applicable only if the action is launched in CI environment (environment variableCIis set to truthy value). PR #192
Fixes
- Value of test output directory, specified by argument
--output-dir, for actionsxcode-project junit-test-resultsandxcode-project run-testshad to point to existing directory, which is too restrictive. Change it so that the specified test output directory can be either created, or it has to exist. File paths are still considered to be invalid inputs. PR #191 - Fix default test destination for
xcode-project run-testswhen tests are run for macOS SDK. Omit test destination for these cases as the tests will be launched on the host machine directly. Otherwise, the default simulator obtained byxcode-project default-test-destinationis still used as before if no devices are specified. PR #191
Docs
- Apply bold style to Markdown docs that are shown using ANSI bold in terminal help messages. PR #190
- Apply pre style to Markdown docs that are shown in bright blue color in terminal help messages. PR #190
- Update docs for
xcode-project run-testsaction. PR #191
Development
- Add function
codemagic.cli.environment.is_ci_environment() -> boolwhich checks whether current process is being run in a CI environment. Check is being performed based on the value ofCIenvironment variable. PR #192
Dependencies
- Add
psutilPython dependency (version5.8.0+) to manage ongoing system processes in a platform-agnostic way. PR #192 - Bumps
pipenvdependency from version2021.11.23to2022.1.8(development only). PR #193
Fixes
- Revoke cached App Store Connect API JSON web token when unauthorized request retry attempts are exhausted. PR #188
Development
- Log for which App Store Connect API key JWT is generated or loaded from disk cache. PR #188
- Remove
reset_tokenparameter fromAppStoreConnectApiClient.generate_auth_headers. PR #188 - Add optional
revoke_auth_info: Callable[[], None]parameter toAppStoreConnectApiSessionto reset App Store Connect API authentication information in case of unauthorized requests. PR #188
Features
-
Change default behaviour for resolving certificate type from provisioning profile type. Map both
IOS_APP_STOREandMAC_APP_STOREprovisioning profile types toDISTRIBUTIONcertificate type instead of the old approach whereIOS_DISTRIBUTIONandMAC_APP_DISTRIBUTIONcertificate types were used respectively. "Apple Distribution" certificates can be used to sign any type of application (iOS, tvOS, Mac, Universal, etc.) and as a result fewer certificates are required. Applies to the following actions:app-store-connect fetch-signing-files,app-store-connect list-certificates.
This change is backwards compatible in the sense that existing matching
IOS_DISTRIBUTIONandMAC_APP_DISTRIBUTIONcertificates are still used forIOS_APP_STOREandMAC_APP_STOREprovisioning profiles if found. PR #185 -
Unify formatting for signing certificates, profiles and bundle IDs in
app-store-connect fetch-signing-fileslog output. PR #185 -
Multiple
--typearguments are now supported forapp-store-connect list-certificatesaction. PR #185 -
When either signing certificate or provisioning profile is saved to disk (for example as part of
app-store-connect fetch-signing-files), then the save path will include resource ID and type, which makes it possible to easily match process output to file on disk. PR #185
Dependencies
Development
- Behaviour of
CertificateType.from_profile_typewas changed:- calling it with
ProfileType.IOS_APP_STOREreturnsCertificateType.DISTRIBUTIONinstead ofCertificateType.IOS_DISTRIBUTIONas before, - and calling it with
ProfileType.MAC_APP_STOREreturnsCertificateType.DISTRIBUTIONinstead ofCertificateType.MAC_APP_DISTRIBUTION. PR #185
- calling it with
- Signature of
AppStoreConnect.list_certificateswas updated. Method argumentcertificate_type: Optional[CertificateType] = Nonewas deprecated and replaced bycertificate_types: Optional[Union[CertificateType, Sequence[CertificateType]]] = None. This change is fully backwards compatible in the sense that as of now both the positional usage of the argument still works, andcertificate_typecan still also be used as a keyword argument. PR #185
Docs
- Update documentation for
app-store-connect list-certificatesto reflect the possibility of multiple--typearguments. PR #185
Features
- Add
--api-unauthorized-retriesoption toapp-store-connectactions to gracefully handle invalid401 Unauthorizedresponses from App Store Connect API. In case HTTP request to App Store Connect API fails with authentication error, generate new JSON Web Token, and try to do the request again until retries are exhausted. Retry count default to3for CLI invocations. PR #178 - Improve error messages for CLI invocations in case invalid value is provided to CLI argument that can be specified using an environment variable. PR #180
- Add option to cache App Store Connect JSON Web Token to disk so that the same token could be reused between subsequent
app-store-connectcommand invocations to avoid false positive authentication errors from App Store Connect API. PR #181 - All
app-store-connectactions have new option--disable-jwt-cacheto turn off caching App Store Connect JWT to disk. The default behaviour is to have disk cache enabled. That is JWT is loaded from disk if present and not expired, and generated tokens are cached to disk unless this feature is turned off. PR #181
Development
AppStoreConnect,AppStoreConnectApiClientandAppStoreConnectApiSessionclasses take new optional keyword argumentunauthorized_request_retrieswhich defines how many times request with unauthorized response should be retried. PR #178- Use custom abstract metaclass for
TypedCliArgumentthat enables class name transformation during CLI argument parsing. Pretty class name can be defined usingtype_name_in_argparse_errorattribute on classes that inherit fromTypedCliArgument. In case pretty name is not defined, then basic types are mapped to string representation, and otherwiseCamelCasenames are convertedcamel case. PR #180 - Extract logic that deals with App Store Connect JWT generation and lifespan from
AppStoreConnectApiClientto standaloneJsonWebTokenManagerclass. PR #181 AppStoreConnectandAppStoreConnectApiClientclasses take new optional keyword argumentenable_jwt_cachewhich configures whether the JSON web token is cached to file or not. PR #181
Docs
- Update docs for
app-store-connectactions and include information about--api-unauthorized-retriesoption. PR #179 - Update docs for
app-store-connectactions and include information about--disable-jwt-cacheoption. PR #183
Fixes
- In case updating or creating localized App Store version meta information fails for any of the provided languages, do not fail the calling action, but log the error instead. Has an effect on
app-store-connect publishandapp-store-connect builds submit-to-app-store. PR #175
Deprecations
- Option
--skip-package-validationofapp-store-connect publishis ignored and shows a deprecation warning. PR #174
Features
- Change
app-store-connect publishnot to run package validation by default before uploading it to App Store Connect. PR #174 - Add new option
--enable-package-validationto actionapp-store-connect publishthat turns on package validation before it is uploaded to App Store Connect. PR #174
Features
- Improve error messages for CLI invocations in case invalid value was provided for argument with
Enumtype. PR #170
Fixes
- Use correct package type for
altoolcommands when publishing tvOS apps usingapp-store-connect publish. PR #173
This is an enhancement release to further streamline the App Store review submission automation capabilities.
Additions and changes from pull request #172.
Features
- Support setting localized meta information for App Store versions when submitting build to App Store review.
- Add new actions group
app-store-version-localizationstoapp-store-connect. - Add new action
app-store-connect app-store-version-localizations createto add localized metadata to an App Store version. - Add new action
app-store-connect app-store-version-localizations deleteto remove localized metadata from an App Store version. - Add new action
app-store-connect app-store-version-localizations getto read App Store version localized metadata. - Add new action
app-store-connect app-store-version-localizations modifyto edit App Store version localized metadata. - Add new action
app-store-connect app-store-versions localizationsto list App Store version localizations for an App Store version. - Change
app-store-connect publishto support adding or updating localized version metadata when submitting build to App Store review. - Change
app-store-connect builds submit-to-app-storeto support adding or updating localized version metadata for App Store version. - Add new App Store Connect API client method
AppStoreVersionLocalizations.createto create App Store version localization meta information. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersionLocalizations.readto obtain App Store version localization meta information. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersionLocalizations.modifyto edit existing App Store version localization meta information. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersionLocalizations.deleteto remove existing App Store version localization meta information. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersions.list_app_store_version_localizationsto list all App Store version localizations for given App Store version. See official API method documentation. - Show more informative error messages in case CLI arguments from environment variables or files are invalid.
- Add new options to actions
app-store-connect publishandapp-store-connect builds submit-to-app-store:--app-store-version-info,--description,--keywords,--marketing-url,--promotional-text,--support-url,--app-store-version-localizations.
Docs
- Create docs for
app-store-connectactions groupapp-store-version-localizations. - Create docs for action
app-store-connect app-store-version-localizations create. - Create docs for action
app-store-connect app-store-version-localizations delete. - Create docs for action
app-store-connect app-store-version-localizations get. - Create docs for action
app-store-connect app-store-version-localizations modify. - Update docs for
app-store-connectactions groupapp-store-versions. - Create docs for action
app-store-connect app-store-versions localizations. - Update docs for action
app-store-connect app-store-versions create. - Update docs for action
app-store-connect app-store-versions modify. - Update docs for action
app-store-connect builds submit-to-app-store. - Update docs for action
app-store-connect publish. - Remove backticks from terminal help messages and keep them only for markdown documentation formatting.
Development
- Add option to limit number of responses in App Store Connect API client pagination method.
- Change type of
App.Attributes.localefrom plainstrtoLocaleenumeration. - Add definition for
AppStoreVersionLocalizationresource. See official resource documentation. - Reorder method signatures in
AbstractBaseActionand unify indentation for method arguments. - Add references to implementing methods to
AbstractBaseActioninterface.
Additions and changes from pull request #164.
Features
- Add new App Store Connect API client method
AppStoreVersions.createto create an App Store version. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersions.read_buildto read associated build from an App Store version. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersions.read_app_store_version_submissionto read associated App Store version submission from an App Store version. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersions.modifyto edit existing App Store version details. See official API method documentation. - Add new App Store Connect API client method
AppStoreVersions.deleteto delete an App Store version. See official API method documentation. - Add ability to group optional CLI action arguments into named argument groups.
- Add new actions group
app-store-versionstoapp-store-connect. - Add new action
app-store-connect app-store-versions createto create a new App Store version using specified build to an app. - Add new action
app-store-connect app-store-versions modifyto update existing App Store version details. - Add new action
app-store-connect app-store-versions deleteto remove App Store version. - Add option to specify build filters for action
app-store-connect apps builds. - Add new action
app-store-connect builds app-store-versionto get the App Store version of a specific build. - Add new action
app-store-connect builds submit-to-app-storeto submit specified build to App Store review. Optionally specify version details and release type. - Update
app-store-connect publishaction to allow automatic App Store review submission after binary upload. - Use grouped CLI arguments in action
app-store-connect publishfor better help messages and documentation. - Add new option
--skip-package-uploadtoapp-store-connect publish. - Add short aliases for CLI flags:
-sufor--skip-package-upload,-svfor--skip-package-validation,-wfor--max-build-processing-wait.
Fixes
- Fix creating
Resourceobjects that do not have any attributes. - Fix
--max-build-processing-waitCLI option validation. - Allow non-integer version numbers for
--build-version-number.
Docs
- Update docs for tool
app-store-connect. - Create docs for
app-store-connectactions groupapp-store-versions. - Create docs for action
app-store-connect app-store-versions create. - Create docs for action
app-store-connect app-store-versions delete. - Create docs for action
app-store-connect app-store-versions modify. - Create docs for
app-store-connectactions groupapps. - Update docs for action
app-store-connect apps app-store-versions. - Update docs for action
app-store-connect apps builds. - Update docs for action
app-store-connect apps list. - Create docs for
app-store-connectactions groupbuilds. - Create docs for action
app-store-connect builds app-store-version. - Create docs for action
app-store-connect builds submit-to-app-store. - Update docs for action
app-store-connect builds submit-to-testflight. - Update docs for action
app-store-connect list-builds. - Update docs for action
app-store-connect publish.
Development
- Support filtering by multiple values for one parameter in
ResourceManager.filter. - Change
ResourceManager._get_update_payloadto acceptrelationshipsin addition toattributes. Makeattributesandrelationshipsarguments keyword-only. - Add missing return type hints to resource manger methods that did not have them.
- Extract argument parser setup from
CliAppclass into separate module underArgumentParserBuilderclass. - Move
create_app_store_version_submissionanddelete_app_store_version_submissionmethods fromAppStoreConnectclass toAppStoreVersionSubmissionsActionGroup. - Collect
app-store-connectactions arguments that are used number of times under argument groups to reduce duplication. - Refactor
PublishActionclass:- extract
publishaction arguments validation into separate method, - move decorator arguments into separate tuple,
- add dataclasses for subaction options,
- support App Store review submission.
- extract
Fixes
- Show appropriate error messages when invalid values are passed to CLI actions using environment variables. PR #168
Breaking
- Action
app-store-connect publishoption--verbose-altool-loggingwas renamed to--altool-verbose-logging. Corresponding environment variable configuration options was also changed fromAPP_STORE_CONNECT_VERBOSE_ALTOOL_LOGGINGtoAPP_STORE_CONNECT_ALTOOL_VERBOSE_LOGGING. PR #163 - Python API for
AppStoreConnect.publishwas changed: keyword argumentverbose_altool_loggingwas renamed toaltool_verbose_logging. PR #163
Features
- Action
app-store-connect pubishwill now retry package validation and upload in case of some known errors (authentication failure, timeout) for configured amount of time. PR #163 - Add new option
--altool-retriesto actionapp-store-connect pubishto configure how many timesaltoolaction will be retried on known flaky error. PR #163 - Add new option
--altool-retry-waitto actionapp-store-connect pubishto configure wait duration in seconds betweenaltoolaction retries. PR #163
Development / Docs
- Do not use line wrapping when generating docs (new feature in
mdutilsversion 1.3.1). PR #163 - Generate new docs for action
app-store-connect publish. PR #163
Fixes
- Fix decoding undefined byte sequences while processing subprocess streams. PR #162
Features
- Add switch to use verbose logging for
altoolsubcommands that are executed as part ofapp-store-connect publish. PR #160
Development / Docs
- Update
app-store-connect publishaction docs. PR #160
Fixes
- Add validation for export options plist path on
xcode-project build-ipaaction. Handle missing files and invalid property list files gracefully PR #155.
Features
Development / Docs
- Do not import
fcntlmodule globally in order to support Windows platform. PR #156 - Create
CliProcessStreamabstraction layer to handle streams on both POSIX and Windows. PR #156
Features
- Show unformatted Xcode build errors on
xcode-project build-ipainvocations that fail due to errors onxcodebuild archive. PR #153.
Development / Docs
- Add a generator
codemagic.utilities.backwards_file_reader.iter_backwardsthat returns the lines of a file in reverse order. PR #153.
Features
- New
app-store-connect register-deviceaction to add new device to Apple Developer team. Registering a device allows creating a provisioning profile for app testing and ad hoc distribution.
Development / Docs
- Rename
DeviceArgument.DEVICE_NAMECLI argument toDeviceArgument.DEVICE_NAME_OPTIONAL. - Update docs for action
app-store-connect beta-groups add-build. - Update docs for action
app-store-connect beta-groups remove-build. - Update docs for action
app-store-connect list-devices. - Add docs for action
app-store-connect register-device.
Development / Docs
- Add
get_fingerprintmethod tocodemagic.models.Certificateclass which returns certificate's hexadecimal fingerprint for requested hashing algorithm.
Fixes
- Make
codemagic.apple.resources.Apprelationship forciProductoptional.
Fixes
- Fix
codemagic.models.application_package.Ipainitialization for packages that are compressed usingLZFSEcompression algorithm. Fix requiresunzipto be available in system$PATH.
Features
- New
app-store-connect beta-groupsaction set to add and remove TestFlight builds from groups of beta testers. app-store-connect publishaction accepts multiple Beta group names under--beta-groupkey. The uploaded TestFlight build will be made available to the specified groups of beta testers.
Development / Docs
- Update
app-store-connect publishaction docs.
Fixes
- Fail action
app-store-connect builds subtmit-to-testflightproperly using error handling in case the application is missing required test information in App Store Connect. - Support
linksfield in App Store Connect API error responses.
Improvements
- Accept list of
BetaBuildInfoobjects asbeta_build_localizationsargument forAppStoreConnect.add_beta_test_infousing Python API.
Improvements
- Add new action
add-beta-test-infoto submit What's new (What to test) localized information for a beta build. - Add new action
submit-to-testflightto submit beta build to TestFlight. - Introduce strict with match with
--strict-match-identifierkeyword when listing applications filtered by Bundle ID. - Avoid waiting for processed build when
MAX_BUILD_PROCESSING_WAITor--max-build-processing-waitis set to 0.
Development
publishcommand will now rely onadd-beta-test-infoandsubmit-to-testflighttasks.- Add
read_with_includefor Builds to return an application along with a build.
Improvements
- Add missing
submittedDateto Beta App Review Submission attributes
Fixes
- Ignore undefined model attributes in App Store Connect API responses instead of failing with
TypeError. - Fix finding uploaded build as part of
app-store-connect publish. - Fix
app-store-connect apps buildsaction by replacing broken List All Builds of an App API endpoint by List Builds endpoint.
Development / Docs
- Add warning to method
list_buildsinAppsresource manager about malfunctioning pagination. - Add missing relationship
ciProducttoAppmodel. - Accept strings for builds filter version restriction.
Fixes
- Fix custom export option usage on
xcode-project use-profiles --custom-export-options. Replace faulty argument unpacking usage with plain dictionary updates and iteration.
Improvements
- Double the number of attempts to find an uploaded build on App Store Connect side
Improvements
- Require API key based authentication for
app-store-connect publishwhen--beta-build-localizationsis used.
Features
- Add action
codemagic-cli-tools installed-toolsto show the tools that are installed by current Codemagic CLI tools version. - Add action
codemagic-cli-tools versionto show version of currently installed Codemagic CLI tools.
Development / Docs
- Create keychains in
~/Library/codemagic-cli-tools/keychainsby default when--pathis not specified withkeychain initialize. - Add docs for new actions from tool
codemagic-cli-tools. - Fix typos in CLI arguments help messages/docs that can be specified using
@env:or@file:prefixes.
Features
- Add action
keychain use-loginto make login keychain from~/Library/Keychainssystem default keychain again.
Improvements
- Save new keychain to
~/Library/Keychains/codemagic-cli-toolsinstead of$TMPDIRby default withkeychain initializein case the--pathoption is not specified.
Development / Docs
- Add docs for action
keychain use-login.
Features
- Make
--whats-newoption independent of--testflightforapp-store-connect publishsince submission to external beta review is not necessary to specify notes. - Make App Store Connect application entry default locale detection more robust by using
primaryLocaleattribute instead of using the firstbetaAppLocalizationfor that app. - Show more descriptive error messages for invalid inputs to CLI arguments that can be defined using
@env:<var_name>and@file:<file_path>notations. - Add more blue and green colors to logs to indicate the start of an activity and completion of it.
Development / Docs
- Allow
strinput forwhats_newarguments to actions defined inBetaBuildLocalizationsActionGroup. - Remove obsolete test which verified that
--whats-newcould only be used together with--testflight. - Update
app-store-connect publishaction docs.
Features
- Remove default value from
--localeoption for actionsapp-store-connect beta-build-localizations createandapp-store-connect publish. In case it is not provided, resolve the default locale value from related application's primary test information. - Make
app-store-connect beta-build-localizations createmore forgiving and allow the cases when beta build localization already exists for the locale. On such occasions just update the resource.
Development / Docs
- Update
app-store-connect publishaction docs. - Update
app-store-connect beta-build-localizations createaction docs. - Do not use runtime enum definition generation during argument parsing.
- Fix error messages for invalid enumeration values.
- Update requests dependency requirement from version 2.22.0 to 2.25.1.
Features
- Check if application has complete test information in App Store Connect before submitting a build for external testing with
app-store-connect publish --testflight. This will enable the submission to fail fast with descriptive message instead of waiting until build processing completes by Apple and only then failing while creating the TestFlight submission. - Add
--max-build-processing-waitoption to configure maximum time thatapp-store-connect publishwill wait for the package to be processed before failing the TestFlight submission. - Improve error message when waiting for package to be processed times out during TestFlight submission as part of
app-store-connect publish.
Development / Docs
- Get build and related resources using App Store Connect API client directly for
app-store-connect publishinstead of reusing otherapp-store-connectactions to reduce unnecessary repetition in the terminal output. - Extract application lookup into a separate method for finding uploaded build.
- Define new models for Apple API resources:
BetaAppLocalizationandBetaAppReviewDetail. - Implement new App Store Connect API client methods to consume endpoints to list beta app Localizations of an app and to read the beta app review details of an app.
- Show default values for arguments of type
TypedCliArgument. - Add documentation for action
app-store-connect builds get. - Document
--max-build-processing-waitoption inapp-store-connect publishaction. - Show default values for arguments of type
TypedCliArgument. - Show the long version of CLI flag first in help messages and online documentation to reduce ambiguity. For example use
--testflightinstead of-tin help messages.
Improvements
- Explicitly mention "certificate" in
app-store-connecterror messages when--certificate-keyis missing to avoid confusion with App Store Connect API key--private-key.
Fixes
- Submit only uploaded iOS application packages (
*.ipafiles) to TestFlight fromapp-store-connect publishaction when submission to Testflight is enabled by--testflightflag.
Features
- Add option to submit "What's new" information along with Testflight build via
--localeand--whats-newarguments inapp-store-connect publishcommand. - Add a set of actions for managing "What's new" information for Testflight builds
app-store-connect beta-build-localizations - Add action
app-store-connect beta-build-localizations createto create localized "What's new" notes for a given beta build - Add action
app-store-connect beta-build-localizations deleteto delete localized "What's new" notes by its ID - Add action
app-store-connect beta-build-localizations modifyto update "What's new" content by its ID - Add action
app-store-connect beta-build-localizations listto list localized "What's new" notes filtered by Build ID and locale code - Add action
app-store-connect beta-build-localizations getto retrieve localized "What's new" notes by its ID
Fixes
- Before creating Beta App Review Submission (submitting build to TestFlight) as part of
app-store-connect publish, wait until the uploaded build processing completes.
Fixes
- Make
altooloutput parsing less strict. Do not failapp-store-connect publishaction invocation ifaltooloutput cannot be interpreted.
Features
- Add option to skip package validation for action
app-store-connect publishwith--skip-package-validationflag. This allows to opt out from runningaltool --validate-appbefore actual upload.
Development / Docs
- Update
app-store-connect publishaction docs to reflect new option--skip-package-validation.
Fixes
- Do not fail actions
app-store-connect get-latest-app-store-build-numberandapp-store-connect get-latest-testflight-build-numberin case no builds were found for specified constraints.
Development / Docs
- Split monolith
AppStoreConnecttool tests file into smaller chunks in separate test module.
Fixes
- Do not require App Store Connect API keys for
app-store-connect publishunless--testflightoption is specified as binary upload can be done with Apple ID and App Specific password only.
Fixes
- Support non-integer (dot-separated versions such as 10.14.1) version codes for
app-store-connect get-latest-app-store-build-numberandapp-store-connect get-latest-testflight-build-number.
Fixes
- Ignore undefined model relationships in App Store Connect API responses instead of failing with
TypeError. - Dynamically generate enumerations for undefined values from App Store Connect API responses instead of failing with
ValueError.
Development / Docs
- Make
SignignCertificatemodel relationshippassTypeIdoptional.
New features
- Add action
app-store-connect apps getto get information about a specific app. - Add action
app-store-connect apps listto find apps added in App Store Connect. - Add action
app-store-connect apps app-store-versionsto find App Store versions associated with a specific app. - Add action
app-store-connect apps buildsto find builds associated with a specific app. - Add action
app-store-connect apps pre-release-versionsto find prerelease versions associated with a specific app. - Add action
app-store-connect beta-app-review-submissions createto submit an app for beta app review to allow external testing. - Add action
app-store-connect beta-app-review-submissions listto find beta app review submissions of a build. - Add action
app-store-connect builds pre-release-versionto find the prerelease version for a specific build - Add action
app-store-connect publishto upload application packages to App Store and submit them to Testflight. - Add action
xcode-project ipa-infoto show information about iOS App Store Package file. - Add action
xcode-project pkg-infoto show information about macOS Application Package file. - Support loading App Store Connect API key from disk using key identifier by checking predefined locations
./private_keys,~/private_keys,~/.private_keys,~/.appstoreconnect/private_keysfor fileAuthKey_<key_identifier>.p8. - Add Python wrapper to Apple's Application Loader tool and use it to publish application packages to App Store Connect.
Fixes
- Handle missing action for action group on command invocation.
- Fix initializing provisioning profiles from in-memory content.
Development / Docs
- Improve modularity by adding support to define tool actions and action groups in separate modules.
- Support strings as path argument for
Certificate.export_p12. - Support strings as path argument for
ExportOptions.from_pathfactory method. - Support strings as path argument for
PbxProject.from_pathfactory method. - Extract resource management methods from
AppStoreConnectto separate mixin class. - Generate documentation for action
app-store-connect apps get. - Generate documentation for action
app-store-connect apps list. - Generate documentation for action
app-store-connect apps app-store-versions. - Generate documentation for action
app-store-connect apps builds. - Generate documentation for action
app-store-connect apps pre-release-versions. - Generate documentation for action
app-store-connect beta-app-review-submissions create. - Generate documentation for action
app-store-connect beta-app-review-submissions list. - Generate documentation for action
app-store-connect builds pre-release-version. - Generate documentation for action
app-store-connect publish. - Generate documentation for action
xcode-project ipa-info. - Generate documentation for action
xcode-project pkg-info.
Fixes
- Allow
passTypeIdrelationship for Certificate model.
New features
- Add action group support for tools.
- Add action
get-profiletoapp-store-connectto show provisioning profile based on resource identifier. - Add action
app-store-connect app-store-version-submissions createto submit App Store Version to review. - Add action
app-store-connect app-store-version-submissions deleteto remove App Store Version from review.
Development / Docs
- Update
--profileoption default value in actionxcode-project use-profilesdocs. - Generate documentation for action groups and list groups under tool documentation pages.
- Add documentation for action
app-store-connect get-profile. - Add documentation for action
app-store-connect app-store-version-submissions create. - Add documentation for action
app-store-connect app-store-version-submissions delete.
Fixes
- Accept
SERVICESas a valid Bundle Identifier platform.
Improvements
- Bugfix: Allow Google Play releases with no name provided in
google-playtool.
Improvements
- Bugfix: Include MacOS application's codesigning certificates in
keychain list-certificatesoutput. - Bugfix: Include provisioning profiles with
.provisionprofileextension in inxcode-project use-profilessearch. - Bugfix: handle provisioning profiles entitlements keys with prefixes e.g.
com.apple.application-identifier. - Bugfix: Improve SDK detection when setting code signing infortmation on Xcode projects instead of always defaulting to
iphoneos.
Improvements
- CI pipeline: Use GitHub CLI tools for releases
Improvements
- Bugfix: export MacOS application's provisioning profiles with
.provisionprofileextension instead of.mobileprovision.
Improvements
- Feature: Add option
--platformto specify the platform forapp-store-connectactionsget-latest-app-store-build-numberandget-latest-testflight-build-number.
Improvements
- Feature: Add option to strictly match bundle IDs by the identifier for
app-store-connectactionsfetch-signing-filesandlist-bundle-idsusing flag--strict-match-identifier.
Dependencies
- Update PyJWT Python dependency to version ~=2.0.
Improvements
- Enhancement: Include the certificate common name in
SigningCertificatestring representation when showing certificates withapp-store-connectactions.
Improvements
- Feature: add the
warn-onlyflag toxcode-project use-profilesnot to fail the action when profiles can't be applied to any of the Xcode projects
Improvements
- Feature: add tool
google-playwith actionget-latest-build-number
Improvements
- Bugfix: Fix regression introduced in 0.4.9 that excluded bundle identifiers with platform type
UNIVERSALfrom list bundle identifiers result in case platform filter (IOSorMAC_OS) was specified. - Bugfix: Fix check for profiles types that have devices allowed. Allow specifying devices only for ad hoc and development provisioning profiles.
Improvements
- Bugfix: Fix platform filter for listing bundle identifiers using App Store Connect API.
Improvements
- Improvement: Add support for tvOS distribution certificates.
Improvements
- Feature: Add an option to extract a certificate from PKCS12 archive.
Improvements
- Feature: Add action
list-buildstoapp-store-connectto list Builds from Apple Developer Portal matching given constraints. - Feature: Add action
get-latest-testflight-build-numbertoapp-store-connectto get latest Testflight build number for the given application. - Feature: Add action
get-latest-app-store-build-numbertoapp-store-connectto get latest App Store build number for the given application. - Improvement: handle datetime in a format containing timezone timedelta
Improvements
- Dependency update: Bump cryptography from ~3.2 to ~3.3
- Improvement: Add options to
keychain add-certificatesto specify which applications have access to the imported certificate without warning.
Improvements
- Improvement: Reduce memory footprint for
xcode-processby not storing xcodebuild logs in memory. Read them from file if need be.
Improvements
- Improvement: Use a single
xcprettyprocess throughoutxcodebuildinvocation for log formatting instead of forking new processes for each log chunk.
Improvements
- Bugfix: PyJWT Python dependency to version 1.x since 2.0.0 has breaking API changes.
Improvements
- Bugfix: Fix converting Xcresults to Junit if testsuite duration is missing from Xcresult's ActionTestMetadata
Improvements
-
Feature: Add action
cleantoxcode-projectto clean Xcode project. -
Feature: Add action
default-test-destinationtoxcode-projectto show default test destination for the chosen Xcode version. -
Feature: Add action
test-destinationstoxcode-projectto list available destinations for test runs. -
Feature: Add action
junit-test-resultstoxcode-projectto convert Xcode Test Result Bundles (*.xcresult) to JUnit XML format. -
Feature: Add action
run-teststoxcode-projectto run unit or UI tests for given Xcode project or workspace. -
Feature: Add action
test-summarytoxcode-projectto show test result summary from given Xcode Test Result Bundles (*.xcresult). -
Refactoring: Create
RunningCliAppMixinto avoid passing around currently invoked app instance. -
Update cryptography Python dependency to version ~=3.2.
Improvements
- Bugfix: Do not fail
keychain add-certificateaction in case the added certificate already exists in keychain.
- Update cryptography Python dependency to version ~=3.2.
Improvements
- Feature: Add option to specify custom
xcodebuildarguments and flags forarchiveand-exportArchiveactions withxcode-project build-ipausing--archive-flags,--archive-xcargs,--export-flagsand--export-xcargsmodifiers.
Improvements
- Improvement: Due to invalid CoreSimulatorService state
xcodebuildbuild commands can fail with errorFailed to find newest available Simulator runtime. To overcome this, make sure that when Xcode project or workspace is archived withxcode-project build-ipa, then CoreSimulatorService is in a clean state.
Improvements
- Improvement: Fail gracefully with appropriate error message when non-existent export options plist path is passed to
xcode-project build-ipa.
Improvements
- Bugfix: Fix obtaining
iCloudContainerEnvironmentexport option when multiple values are available.
Improvements
- Bugfix: Specify
iCloudContainerEnvironmentexport option when exporting xcarchive to ipa usingxcode-project build-ipa.
Improvements
- Update: Make removing generated xcarchive optional.
Improvements
- Bugfix: Support profile state
EXPIRED.
Improvements
- Bugfix: Respect custom values specified by
--certificates-dirand--profiles-dirflags forapp-store-connect. - Feature: Add
--profile-typefilter toapp-store-connect list-certificatesto show only certificates that can be used with given profile type. - Feature: Support new certificate types
DEVELOPMENTandDISTRIBUTION. - Feature: Support new profile types
MAC_CATALYST_APP_DEVELOPMENT,MAC_CATALYST_APP_DIRECTandMAC_CATALYST_APP_STORE.
Improvements
- Feature: Support OpenSSH private key format for certificate private key (
--certificate-keyoption forapp-store-connect). - Bugfix: For
app-store-connect fetch-signing-filesuse given platform type for listing devices on creating new provisioning profiles instead of detecting it from bundle identifier.
Improvements
- Bugfix: Improve product bundle identifier resolving for settings code signing settings.
Improvements
- Feature: Add option to specify archive directory to
xcode-project build-ipausing--archive-directoryflag.
Improvements
- Bugfix: Improve variable resolving from Xcode projects for setting code signing settings.
Improvements
- Bugfix: Fix nullpointer on setting process stream flags.
Improvements
- Bugfix: Reading
jarsigner verifyoutput streams got stuck on some Android App bundles.
Improvements
- Feature: Add new command
android-app-bundle - Feature: Include Bundletool jar in the distribution
- Bugfix: Gracefully handle Xcodeproj exceptions on saving React Native iOS project code signing settings
Deprecations
- Add deprecation notice to
universal-apkcommand
- Improve error messages on invalid inputs when using argument values from environment variables.
- Add
--versionoption to tools to display current version.
- Bugfix: Fix Apple Developer Portal API pagination. Avoid duplicate query parameters in subsequent pagination calls when listing resources.
- Bugfix: Fix creating iOS App Store and iOS In House provisioning profiles. Do not include devices in the create resource payload.
- Bugfix: Fix
TypeErroron Apple Developer Portal resource creation
- Bugfix: Accept
UNIVERSALas valid Bundle ID platform value
- Bugfix: Improve detection for Xcode managed provisioning profiles
Released 10.02.2020
- Return exit code
0on successful invocation ofgit-changelog - Return exit code
0on successful invocation ofuniversal-apk
Released 31.01.2020
- Update documentation
Released 14.01.2020
- Add tool
app-store-connect - Add tool
keychain - Add tool
xcode-project