You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Switch iOS CI to automatic code signing with App Store Connect API key
Replaced manual provisioning profile with an App Store Connect API key for CI, enabling Xcode to manage profiles via `-allowProvisioningUpdates` and simplifying the process by removing manual profile rotation. Local builds remain compatible with automatic signing.
|`IOS_BUILD_CERTIFICATE_BASE64`| Export a Development certificate (.p12) from Keychain Access or Xcode app, then base64-encode it: `base64 -i build_certificate.p12 \| pbcopy`|
39
-
|`IOS_BUILD_CERTIFICATE_PASSWORD`| The password you set when exporting the .p12 certificate. |
40
-
|`IOS_BUILD_PROVISION_PROFILE_BASE64`| Download the provisioning profile (.mobileprovision) from [Apple Developer > Profiles](https://developer.apple.com/account/resources/profiles/list). It must include the app's bundle ID (`com.mlcommons.inference`). Base64-encode it: `base64 -i profile.mobileprovision \| pbcopy`|
41
-
|`IOS_KEYCHAIN_PASSWORD`| Any random password for the temporary CI keychain. Generate one with: `openssl rand -base64 32`|
42
-
|`APPLE_DEVELOPMENT_TEAM`| Your 10-character Apple Team ID. Find it at [Apple Developer > Membership details](https://developer.apple.com/account#MembershipDetailsCard) or in Xcode under **Signing & Capabilities**. |
38
+
|`IOS_BUILD_CERTIFICATE_BASE64`| Export a Development certificate (.p12) from Keychain Access or Xcode app, then base64-encode it: `base64 -i build_certificate.p12 \| pbcopy`|
39
+
|`IOS_BUILD_CERTIFICATE_PASSWORD`| The password you set when exporting the .p12 certificate. |
40
+
|`IOS_KEYCHAIN_PASSWORD`| Any random password for the temporary CI keychain. Generate one with: `openssl rand -base64 32`|
41
+
|`APPLE_DEVELOPMENT_TEAM`| Your 10-character Apple Team ID. Find it at [Apple Developer > Membership details](https://developer.apple.com/account#MembershipDetailsCard) or in Xcode under **Signing & Capabilities**. |
42
+
|`APP_STORE_CONNECT_API_KEY_BASE64`| Base64-encoded App Store Connect API key (.p8 file). See steps below. |
43
+
|`APP_STORE_CONNECT_API_KEY_ID`| The Key ID shown in App Store Connect when creating the API key. |
44
+
|`APP_STORE_CONNECT_API_KEY_ISSUER_ID`| The Issuer ID from [App Store Connect > Users and Access > Integrations > App Store Connect API](https://appstoreconnect.apple.com/access/integrations/api). |
43
45
44
46
### Firebase
45
47
@@ -64,7 +66,7 @@ under **Project Settings > General > Your apps > iOS app**.
64
66
|---|---|
65
67
|`FLUTTER_BUILD_NUMBER_OFFSET`| Optional offset added to `GITHUB_RUN_NUMBER` to compute the build number. Set this if you need to align build numbers across workflows. Default: `0`. |
66
68
67
-
## Step-by-step: Creating the Apple certificate and provisioning profile
69
+
## Step-by-step: Creating the Apple certificate and API key
68
70
69
71
### 1. Create a certificate signing request (CSR)
70
72
@@ -88,19 +90,20 @@ under **Project Settings > General > Your apps > iOS app**.
88
90
```
89
91
- Save the base64 string as `IOS_BUILD_CERTIFICATE_BASE64` and the password as `IOS_BUILD_CERTIFICATE_PASSWORD`
90
92
91
-
### 4. Create a provisioning profile
93
+
### 4. Create an App Store Connect API key
92
94
93
-
- Go to [Apple Developer > Profiles](https://developer.apple.com/account/resources/profiles/list)
94
-
- Click **+**, select **iOS App Development**
95
-
- Select the App ID matching `com.mlcommons.inference`
96
-
- Select the certificate created in step 2
97
-
- Select the devices to test on (or select all)
98
-
- Download the `.mobileprovision` file
99
-
- Base64-encode it:
95
+
- Go to [App Store Connect > Users and Access > Integrations > App Store Connect API](https://appstoreconnect.apple.com/access/integrations/api)
96
+
- Click **+** to generate a new key
97
+
- Give it a name (e.g. `CI Signing`) and select the **Developer** role
98
+
- Download the `.p8` file (you can only download it once)
99
+
- Note the **Key ID** and **Issuer ID** shown on the page
100
+
- Base64-encode the key:
100
101
```bash
101
-
base64 -i profile.mobileprovision| pbcopy
102
+
base64 -i AuthKey_XXXXXXXXXX.p8| pbcopy
102
103
```
103
-
- Save as `IOS_BUILD_PROVISION_PROFILE_BASE64`
104
+
- Save the base64 string as `APP_STORE_CONNECT_API_KEY_BASE64`
105
+
- Save the Key ID as `APP_STORE_CONNECT_API_KEY_ID`
106
+
- Save the Issuer ID as `APP_STORE_CONNECT_API_KEY_ISSUER_ID`
0 commit comments