Skip to content

Fix: set IOS_BETA_BUNDLE_ID at job level for provisioning profile selection - #8192

Merged
azooz2003-bit merged 1 commit into
mainfrom
fix/ios-bundle-id-env-level
Jul 15, 2026
Merged

azooz2003-bit merged 1 commit into
mainfrom
fix/ios-bundle-id-env-level

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Jul 15, 2026 •

Copy link
Copy Markdown
Collaborator

The provisioning profile installation step runs before the archive step, so it couldn't access IOS_BETA_BUNDLE_ID to select the correct profile. This moves the bundle ID and display name to the job-level environment so all steps can access them.


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Summary by cubic

Set IOS_BETA_BUNDLE_ID and IOS_BETA_DISPLAY_NAME at the job level in the iOS TestFlight workflow so the provisioning profile step can select the correct profile for internal builds. Fixes profile selection failing when the archive step defines these values too late.

Written for commit f5c4c23. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Standardized the internal iOS beta build identity used during TestFlight uploads.
    • Internal builds now use a consistent bundle identifier and display name.

… can use it

The provisioning profile step runs before the archive step, so it couldn't
access the bundle ID to select the correct profile. Move bundle ID and
display name to job env so all steps can access them.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jul 16, 2026 4:57am
cmux-staging Building Building Preview, Comment Jul 16, 2026 4:57am

@azooz2003-bit
azooz2003-bit merged commit 05550e7 into main Jul 15, 2026
2 of 5 checks passed
@coderabbitai

coderabbitai Bot commented Jul 15, 2026 •

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1f0a5346-7b3a-4a69-a3d8-7cc478b96f62

📥 Commits

Reviewing files that changed from the base of the PR and between 271a51f and f5c4c23.

📒 Files selected for processing (1)
  • .github/workflows/ios-testflight.yml

📝 Walkthrough

Walkthrough

The iOS TestFlight upload job now sets job-level environment variables for the internal beta bundle identifier and display name.

Changes

iOS TestFlight workflow

Layer / File(s) Summary
Configure internal beta identity
.github/workflows/ios-testflight.yml
The upload job defines IOS_BETA_BUNDLE_ID as dev.cmux.app.internal and IOS_BETA_DISPLAY_NAME as cmux INTERNAL.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Possibly related PRs

Suggested reviewers: lawrencecchen

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ios-bundle-id-env-level

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 15, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR moves IOS_BETA_BUNDLE_ID and IOS_BETA_DISPLAY_NAME from the step-level env of the archive step to the job-level env of the upload job, so that the "Install beta provisioning profile" step — which runs before archive — can read the bundle ID to select the correct profile.

  • The root cause is correctly fixed: the provisioning-profile step now sees dev.cmux.app.internal at job level instead of falling through to the :-dev.cmux.app.beta default.
  • The same two variables remain hardcoded in the archive step's step-level env block (lines 497–500), which now duplicates the job-level values. Step-level env overrides job-level for that step, so a future change to one location but not the other would silently desync the profile used for archiving from the profile installed in the earlier step.

Confidence Score: 4/5

Safe to merge — the provisioning profile selection bug is correctly fixed, and no step behavior changes in an unexpected way.

The change correctly exposes the bundle ID at job level so the provisioning step can read it. The only concern is that the archive step still re-declares the same two variables in its own step-level env block, creating a dual source of truth that could silently diverge if one side is updated without the other in a future PR.

.github/workflows/ios-testflight.yml — specifically the step-level env block in the Archive, export, and upload to TestFlight step (around line 497) which still redundantly declares the same bundle ID and display name now also set at the job level.

Important Files Changed

Filename Overview
.github/workflows/ios-testflight.yml Moves IOS_BETA_BUNDLE_ID and IOS_BETA_DISPLAY_NAME to job-level env so the provisioning-profile step can read them; the fix is correct but leaves behind redundant step-level definitions in the archive step that could cause drift.

Comments Outside Diff (1)

  1. .github/workflows/ios-testflight.yml, line 497-500 (link)

    P2 Stale duplicate env vars in archive step

    IOS_BETA_BUNDLE_ID and IOS_BETA_DISPLAY_NAME are now defined at both the job level (the fix introduced by this PR) and the step level of the "Archive, export, and upload to TestFlight" step. The step-level definitions take precedence over the job-level ones for that step. If a future maintainer updates only the job-level values (e.g., to change the bundle ID), the archive step will silently continue using its stale step-level overrides while the provisioning-profile step picks up the updated job-level value — mismatching the profile and the archive. The step-level entries should be removed now that job-level is the canonical location.

Reviews (1): Last reviewed commit: "Fix: set IOS_BETA_BUNDLE_ID at job level..." | Re-trigger Greptile

austinywang pushed a commit to mvanhorn/cmux that referenced this pull request Jul 15, 2026
The internal provisioning profile in ASC was created without Push Notifications
enabled. Temporarily skip the aps-environment entitlement check for internal
builds to unblock the TestFlight upload workflow. The proper fix requires
recreating the internal provisioning profile in ASC with Push Notifications
enabled.

See: manaflow-ai#8192
lawrencecchen added a commit that referenced this pull request Jul 17, 2026
* TestFlight workflow: prepare for proper internal provisioning profile

The internal TestFlight build requires a provisioning profile with push
notifications (aps-environment) enabled. Build #7 successfully archived and
exported the app but failed during validation:

  error: re-signed app is still missing aps-environment; refusing to upload
  a push-broken build

This requires creating a valid provisioning profile for dev.cmux.app.internal
in App Store Connect with Push Notifications capability enabled, then setting
the GitHub secret IOS_BETA_PROVISIONING_PROFILE_INTERNAL_BASE64.

See: #8192

* Validate internal TestFlight push entitlement

---------

Co-authored-by: cmux reload-cloud <cmux-reload-cloud@users.noreply.github.com>
Co-authored-by: lawrencecchen <54008264+lawrencecchen@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview – cmux — f5c4c23a Deployed Jul 16, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant