Skip to content

Add xcframework-build-smoke CI job#6715

Closed
ajpallares wants to merge 6 commits into
mainfrom
pallares/ci-xcframework-build-smoke
Closed

Add xcframework-build-smoke CI job#6715
ajpallares wants to merge 6 commits into
mainfrom
pallares/ci-xcframework-build-smoke

Conversation

@ajpallares

@ajpallares ajpallares commented Apr 30, 2026

Copy link
Copy Markdown
Member

Motivation

Errors that only manifest in the xcframework code path (e.g. #6713: a Swift file added to SPM/Tuist sources but not registered in RevenueCat.xcodeproj) currently go undetected until the heavy release_checks lane runs on release/* branches. We can catch the same class of failures on every PR with a much smaller job.

Description

Adds a lightweight CI job, xcframework-build-smoke, that builds the xcodeproj-driven RevenueCatUIDev scheme for iOS in distribution mode with the RC_XCFRAMEWORK compilation condition, mirroring create_xcframework's configuration without archiving or codesigning.

  • New Fastlane lane build_xcframework_smoke (compile-only, ~1–2 min on top of dependency setup).
  • New CircleCI job wired into:
    • the reduced suite (run-all-tests) so it runs on every PR push,
    • the release-or-main workflow,
    • all-tests-succeeded.requires so it's a required gate for tagging,
    • the on-demand allowlist in .circleci/generate-requested-jobs-config.js.

Verification

Verified that the new job catches the original failure mode by temporarily reverting the fix from #6713 on this branch. The smoke job failed as expected with the same cannot infer key path type from context errors we saw in release-checks: https://app.circleci.com/pipelines/github/RevenueCat/purchases-ios/37247/workflows/d670cc34-a07a-4863-9942-85060e0d18cb/jobs/552259. The temporary revert has since been reapplied so the branch builds clean.


Note

Low Risk
CI-only changes that add an extra build step and gating; primary risk is increased pipeline time or unexpected build failures due to the new compile configuration.

Overview
Adds a lightweight xcframework-build-smoke CI job to compile the xcframework build configuration (iOS RevenueCatUIDev in distribution mode with RC_XCFRAMEWORK) on PRs.

Introduces a new Fastlane lane build_xcframework_smoke and wires the job into both run-all-tests and release-or-main workflows (including required-gate lists), and allows it to be triggered via the on-demand requested-jobs allowlist.

Reviewed by Cursor Bugbot for commit 099d1e5. Bugbot is set up for automated code reviews on this repo. Configure here.

Adds a lightweight CI job that builds the xcodeproj-driven
`RevenueCatUIDev` scheme for iOS in distribution mode with
`RC_XCFRAMEWORK` set, mirroring the configuration of
`create_xcframework` without the cost of archiving and codesigning.

Catches problems that previously only surfaced in `release_checks`,
such as Swift files added to SPM/Tuist sources but not registered in
`RevenueCat.xcodeproj`, or symbols guarded by `RC_XCFRAMEWORK`.

The job runs in the reduced suite on every PR push and in
`release-or-main`, and is required for `all-tests-succeeded`.

Made-with: Cursor
ajpallares and others added 2 commits April 30, 2026 09:32
Adds the new job to the on-demand allowlist so it can be triggered via
the `please test` GitHub bot path alongside the other CI jobs.

Made-with: Cursor
@ajpallares

Copy link
Copy Markdown
Member Author

@RCGitBot please test xcframework-build-smoke

@github-actions

Copy link
Copy Markdown

🚀 Triggered xcframework-build-smokePipeline #37245

@ajpallares

Copy link
Copy Markdown
Member Author

@RCGitBot please test xcframework-build-smoke

@github-actions

Copy link
Copy Markdown

🚀 Triggered xcframework-build-smokePipeline #37247

@ajpallares ajpallares marked this pull request as ready for review April 30, 2026 07:41
@ajpallares ajpallares requested a review from a team as a code owner April 30, 2026 07:41
@ajpallares ajpallares requested a review from a team April 30, 2026 07:43

@rickvdl rickvdl left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great! Thanks! 🙌

Comment thread fastlane/Fastfile
# or symbols guarded by `RC_XCFRAMEWORK`) without paying the cost of the full
# `release_checks` lane.
desc "Smoke build of the xcframework code path (RevenueCatUIDev, iOS, distribution)"
lane :build_xcframework_smoke do |options|

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we reuse (part of the) export_xcframework lane here?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I see the point. But export_xcframework/create_xcframework archive + codesign + zip per platform is exactly the cost we wanted to skip here. A shared helper would mean refactoring build_release to accept extra xcargs, which feels out of scope?

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 361ed9c. Configure here.

Comment thread .circleci/default_config.yml Outdated
Addresses review feedback:

- Move the job from the reduced suite to the full suite (gated on
  `approve-full-tests`) so it runs alongside the other build tests.
- Add it to `all-tasks-passed.requires` so a smoke failure actually
  blocks PR merge (the previous wiring left the summary gate green).
- Reorder its placement in the `release-or-main` workflow and
  `all-tests-succeeded.requires` next to `api-tests` for consistency.

Made-with: Cursor
@ajpallares

Copy link
Copy Markdown
Member Author

Closing in favour of #6716, which addresses this failure mode much more cheaply by promoting the existing Dangerfile warning to a failure. The Danger check already detects Swift files that are added on disk but not registered in RevenueCat.xcodeproj (which is the exact bug from #6713) — making it a hard fail blocks merge without paying the cost of an extra xcodebuild step on every PR.

@ajpallares ajpallares closed this Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants