DailyRoundup

CI/CD Setup

DailyRoundup uses two GitHub Actions workflows for automated building and releasing the iOS app:

The release workflow requires nine secrets configured at Settings → Secrets and variables → Actions in the GitHub repository. The distribution certificate, keychain password, and App Store Connect API credentials are shared between the iOS and macOS jobs.


Required Secrets

APPLE_TEAM_ID

Your 10-character Apple Developer team identifier. Also required by the build check workflow.

Where to find it: Log in at developer.apple.comAccount → Membership details. The Team ID is listed there (e.g. 6P7796G469).


DISTRIBUTION_CERTIFICATE_P12

Your Apple Distribution certificate exported as a Base64-encoded .p12 file.

Note: This requires an Apple Distribution certificate, which is separate from the Apple Development certificate used for local builds. Create it first if it doesn’t exist before attempting to create the provisioning profile — the profile creation step requires it.

How to obtain it:

  1. Go to developer.apple.comAccount → click Certificates, IDs & Profiles under Program resources.
  2. Click Certificates in the left sidebar, then click the + button next to the “Certificates” heading.
  3. On the “Create a New Certificate” screen, the page lists many certificate types across Software and Services sections. Under Software (near the top), select Apple Distribution — it is the second option — and click Continue.
  4. Generate a Certificate Signing Request (CSR) from your Mac:
    • Open Keychain Access → menu bar → Keychain Access → Certificate Assistant → Request a Certificate From a Certificate Authority
    • Enter your email address, select Saved to disk, click Continue, and save the .certSigningRequest file.
  5. Upload the .certSigningRequest file in the browser and click Continue.
  6. Download the generated .cer file and double-click it to install it into Keychain Access.
  7. In Keychain Access → My Certificates, find Apple Distribution: … (it should have a private key disclosure triangle).
  8. Right-click → Export → save as distribution.p12, and set a strong password.
  9. Base64-encode it and copy to clipboard:
    base64 -i distribution.p12 | pbcopy
    
  10. Paste the result as the secret value.

DISTRIBUTION_CERTIFICATE_PASSWORD

The password you set when exporting the .p12 file above.


KEYCHAIN_PASSWORD

A password used to create a temporary keychain on the CI runner. Use any strong random string — this keychain is deleted after the build completes.

openssl rand -base64 32 | pbcopy

PROVISIONING_PROFILE

The App Store distribution provisioning profile for dev.dcwalker.DailyRoundup, Base64-encoded.

Prerequisites: The DISTRIBUTION_CERTIFICATE_P12 step above must be completed first — the Apple Distribution certificate must exist on developer.apple.com before the profile can be created.

How to obtain it:

  1. Go to developer.apple.comAccount → click Certificates, IDs & Profiles under Program resources.
  2. Click Profiles in the left sidebar. If no profiles exist yet, click Generate a profile; otherwise click the + button next to the “Profiles” heading.
  3. On the “Register a New Provisioning Profile” screen, scroll to the Distribution section, select App Store Connect, and click Continue.
  4. On the “Select an App ID” screen, choose XC dev dcwalker DailyRoundup (6P7796G469.dev.dcwalker.DailyRoundup) from the dropdown and click Continue.

    If the next screen says “No Certificates are available”, stop here and complete the DISTRIBUTION_CERTIFICATE_P12 steps above first, then return to this step.

  5. Select your Apple Distribution certificate and click Continue.
  6. Name the profile exactly DailyRoundup AppStore — this must match the value in DailyRoundup/ExportOptions.plist. Click Generate.
  7. Download the .mobileprovision file.
  8. Base64-encode it and copy to clipboard:
    base64 -i DailyRoundup_AppStore.mobileprovision | pbcopy
    
  9. Paste the result as the secret value.

ASC_API_KEY_ID

The Key ID of your App Store Connect API key.

Where to find it:

  1. Log in to App Store Connect and click Users and Access in the top navigation bar.
  2. Click the Integrations tab (in the secondary tab bar below “Users and Access”).
  3. Click App Store Connect API in the left sidebar.
  4. Click the + button to create a new key. Give it a name (e.g. GitHub Actions) and select the Developer role, then click Generate.
  5. The Key ID is shown in the key list (e.g. ABC1234DEF).

ASC_ISSUER_ID

The Issuer ID associated with your App Store Connect API keys.

Where to find it: On the same App Store Connect API page (same steps 1–3 above), the Issuer ID is shown at the top of the page as a UUID (e.g. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).


ASC_API_KEY_P8

The private key downloaded when creating the App Store Connect API key above.

How to obtain it:

  1. When you create the API key, download the .p8 file immediately — it can only be downloaded once.
  2. Copy the full file contents as the secret value, including the header and footer lines:
    -----BEGIN PRIVATE KEY-----
    ...
    -----END PRIVATE KEY-----
    

macOS Release

The release.yml workflow includes a macOS job that archives, exports, and uploads the Mac Catalyst build to App Store Connect. It shares the DISTRIBUTION_CERTIFICATE_P12, DISTRIBUTION_CERTIFICATE_PASSWORD, and KEYCHAIN_PASSWORD secrets with the iOS job and requires one additional secret.

Note: Mac Catalyst apps use the same Apple Distribution certificate as iOS. If your certificate has Platform: All (visible on developer.apple.com → Certificates), no additional certificate setup is needed for the macOS job.


MAC_PROVISIONING_PROFILE

The Mac Catalyst App Store distribution provisioning profile for dev.dcwalker.DailyRoundup, Base64-encoded.

Prerequisites: The MAC_DISTRIBUTION_CERTIFICATE_P12 step above must be completed first — the Apple Distribution certificate must exist on developer.apple.com before the profile can be created.

How to obtain it:

  1. Go to developer.apple.comAccount → click Certificates, IDs & Profiles under Program resources.
  2. Click Profiles in the left sidebar, then click the + button next to the “Profiles” heading.
  3. On the “Register a New Provisioning Profile” screen, scroll to the Distribution section, select App Store Connect, and click Continue.
  4. On the “Select an App ID” screen, a Profile Type radio appears with Mac and Mac Catalyst options. Select Mac Catalyst — DailyRoundup is a Mac Catalyst app, not a native Mac app, and choosing the wrong type will cause a signing failure at export time. Then choose XC dev dcwalker DailyRoundup (6P7796G469.dev.dcwalker.DailyRoundup) from the App ID dropdown and click Continue.

    If the next screen says “No Certificates are available”, stop here and complete the MAC_DISTRIBUTION_CERTIFICATE_P12 steps above first, then return to this step.

  5. Select your Apple Distribution certificate and click Continue.
  6. Name the profile exactly DailyRoundup Mac AppStore — this must match the value in DailyRoundup/ExportOptions-macOS.plist. Click Generate.
  7. Download the .provisionprofile file.
  8. Base64-encode it and copy to clipboard:
    base64 -i DailyRoundup_Mac_AppStore.provisionprofile | pbcopy
    
  9. Paste the result as the secret value.