Port the remaining three macOS jobs to the Bitrise ci-ios pipeline - #636
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
5f14e09 to
ade88b9
Compare
30948c5 to
11000e2
Compare
ade88b9 to
f952221
Compare
11000e2 to
a581a2d
Compare
f952221 to
4a0efcf
Compare
a581a2d to
90a015d
Compare
| meta: | ||
| bitrise.io: | ||
| stack: *macos_stack | ||
| machine_type_id: g2.mac.4large |
There was a problem hiding this comment.
4large seems reasonable for React Native, but would we get away with g2.mac.large for swift package and sample runs?
markmur
left a comment
There was a problem hiding this comment.
Left a question about machine size but looks good otherwise
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
FailuresCaution These E2E checks are not yet required, so they do not block merging — but a failure may still indicate a real issue to resolve before merging.
Android — react-native-android
Android — kotlin-android
|
Part of the macOS CI speed-up. Tracked on shop/issues-checkout-kit#1207, under shop/issues-checkout-kit#1202. Completes the port started in the previous PR. `ci-ios` now covers all four slow macOS jobs. ## Change `e2e/config/ios_ci.yml` gains `swift-samples`, `react-native-build-ios` and `react-native-test-ios`. The set-equality invariants from the previous PR then force `e2e/bitrise.yml` to match, which it does: three `ci-ios-*` workflows, three `run_if` blocks, three `share-pipeline-variable@1` entries, and three more names in `ci-ios-report.depends_on`. All three reuse the existing step bundles verbatim — `install-node-modules`, `install-ruby-gems`, `install-cocoapods`, `bootstrap-mint`, `create-ios-simulator`. Both `check_published_podfile_lock` guards are kept, each in its own step **before** `pod install`, so a local-path lockfile is named rather than surfacing as an opaque `--deployment` diff. ## Baselines to beat | Job | n | median | p90 | slowest step | share | | --- | --- | --- | --- | --- | --- | | `React Native / Run iOS Tests` | 11 | 13m19s | 13m53s | `Run iOS tests` 11m44s | 88% | | `React Native / Build iOS Sample` | 11 | 11m59s | 13m54s | `Build iOS sample` 10m27s | 87% | | `Swift / build-and-test-samples` | 11 | 6m38s | 8m10s | `Run Tests` 6m04s | 91% | React Native pair total: 25m18s. Whole-PR CI wall clock: 15m18s. 🟡 Variance is wide across all four jobs. Only the median over n ≥ 10 is worth comparing. ## Selection, verified | Change | Jobs selected | | --- | --- | | `platforms/swift/**` | `swift-package-tests`, `swift-samples` | | `platforms/react-native/**` | `react-native-build-ios`, `react-native-test-ios` | | `Package.swift` | all four | | `README.md` | none — `CI_IOS_HAS_JOBS=false` | `Package.swift` selecting all four mirrors `ci.yml:63-64` and `ci.yml:90-91`. ## Verification - `shadowenv exec -- ./scripts/test_ruby` — 293 runs, 0 failures. - `shadowenv exec -- bitrise validate --config=e2e/bitrise.yml` — valid. - Negative control: removing one flag and one `run_if` block fails all three set-equality invariants. ## Decisions made without you - **`swift-samples` secrets**: the samples only need a well-formed storefront configuration to compile, so the job exports placeholder values and calls `scripts/setup_storefront_env --skip-optional-prompts` directly. It does not call `e2e_configure_storefront`, which asserts the real secrets. Staying off them is what lets the job run on fork pull requests. - **`react-native-test-ios` pods**: not the `install-cocoapods` bundle — that one owns the sample app's Pods tree, and `test_ios` runs `pod install` for the integration app itself. An inline `restore-cache` / `save-cache` pair carries `test/rct-integration-app/Pods` instead. The plan called for a step bundle; inline is used because a bundle cannot wrap a step that lives in the workflow, and the paired-cache invariant added in the next PR would flag a split pair. - **`bootstrap-mint` in `react-native-test-ios`**: `test_ios` calls `generate_xcode_projects`, which needs xcodegen.
90a015d to
4cc6dfc
Compare
4a0efcf to
1473d71
Compare

Part of the macOS CI speed-up
Epic
Issue
Completes the port started in the previous PR.
ci-iosnow covers all four slowmacOS jobs.
Change
e2e/config/ios_ci.ymlnow includesswift-samplesreact-native-build-iosreact-native-test-iosBaselines to beat
React Native / Run iOS TestsRun iOS tests11m44sReact Native / Build iOS SampleBuild iOS sample10m27sSwift / build-and-test-samplesRun Tests6m04sReact Native pair total: 25m18s. Whole-PR CI wall clock: 15m18s.
🟡 Variance is wide across all four jobs.
Before you merge
Important
platforms/swift/README.mdand/orplatforms/android/README.md)Releasing a new Swift version?
ShopifyCheckoutKit.podspecplatforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swiftplatforms/swift/README.md(major version only)Releasing a new Embedded Checkout Protocol version?
embeddedCheckoutProtocolAndroidinplatforms/android/gradle/libs.versions.tomlprotocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.apiif the public API changedReleasing a new Android version?
checkoutKitAndroidinplatforms/android/gradle/libs.versions.tomlplatforms/android/README.mdTip
See the Contributing documentation for the full release process per platform.