Skip to content

Port the remaining three macOS jobs to the Bitrise ci-ios pipeline - #636

Open
kieran-osgood-shopify wants to merge 1 commit into
kieran-osgood/macos-ci-4-bitrise-gatefrom
kieran-osgood/macos-ci-5-bitrise-remaining-jobs
Open

Port the remaining three macOS jobs to the Bitrise ci-ios pipeline#636
kieran-osgood-shopify wants to merge 1 commit into
kieran-osgood/macos-ci-4-bitrise-gatefrom
kieran-osgood/macos-ci-5-bitrise-remaining-jobs

Conversation

@kieran-osgood-shopify

@kieran-osgood-shopify kieran-osgood-shopify commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Part of the macOS CI speed-up
Epic
Issue

Completes the port started in the previous PR. ci-ios now covers all four slow
macOS jobs.

Change

e2e/config/ios_ci.yml now includes

  • swift-samples
  • react-native-build-ios
  • react-native-test-ios

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.

Before you merge

Important

  • I've added tests to support my implementation
  • I have read and agree with the Contribution Guidelines
  • I have read and agree with the Code of Conduct
  • I've updated the relevant platform README (platforms/swift/README.md and/or platforms/android/README.md)

Releasing a new Swift version?
  • I have bumped the version in ShopifyCheckoutKit.podspec
  • I have bumped the version in platforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swift
  • I have updated the SwiftPM/CocoaPods version snippets in platforms/swift/README.md (major version only)
Releasing a new Embedded Checkout Protocol version?
  • I have bumped embeddedCheckoutProtocolAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated protocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.api if the public API changed
Releasing a new Android version?
  • I have bumped checkoutKitAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated the Gradle/Maven version snippets in platforms/android/README.md

Tip

See the Contributing documentation for the full release process per platform.

@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-4-bitrise-gate branch from 5f14e09 to ade88b9 Compare August 13, 2026 09:22
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-5-bitrise-remaining-jobs branch from 30948c5 to 11000e2 Compare August 13, 2026 09:22
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-4-bitrise-gate branch from ade88b9 to f952221 Compare August 13, 2026 11:36
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-5-bitrise-remaining-jobs branch from 11000e2 to a581a2d Compare August 13, 2026 11:36
@kieran-osgood-shopify
kieran-osgood-shopify marked this pull request as ready for review August 14, 2026 12:28
@kieran-osgood-shopify
kieran-osgood-shopify requested a review from a team as a code owner August 14, 2026 12:28
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-4-bitrise-gate branch from f952221 to 4a0efcf Compare August 14, 2026 12:36
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-5-bitrise-remaining-jobs branch from a581a2d to 90a015d Compare August 14, 2026 12:36
Comment thread e2e/bitrise.yml
meta:
bitrise.io:
stack: *macos_stack
machine_type_id: g2.mac.4large

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

4large seems reasonable for React Native, but would we get away with g2.mac.large for swift package and sample runs?

@markmur markmur left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Left a question about machine size but looks good otherwise

@bitrise

bitrise Bot commented Aug 14, 2026

Copy link
Copy Markdown

Install this build

Open Tophat, select your target device, then click Install. Links open on the Mac running Tophat.

SDK Install
React Native Install with Tophat
Swift Install with Tophat
Kotlin Install with Tophat

Checkout Kit E2E results

Status Suite Target Platform OS version tag Device
react-native-ios react-native ios latest iPhone 15
iOS 27 Beta
react-native-android react-native android latest Google Pixel 9
Android 17.0
kotlin-android kotlin android latest Google Pixel 9
Android 17.0
swift-ios swift ios latest iPhone 15
iOS 27 Beta

Failures

Caution

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.
If you believe an assertion is flaky, please raise a ticket in the #checkout-kit-devs channel so it can be addressed.

BrowserStack artifacts require BrowserStack access. Sign in to BrowserStack App Automate before opening artifact links.

Android — react-native-android

Test Status Artifacts
./tests/shared/checkout-present-and-close BrowserStack · Video · Screenshot · Maestro commands · Maestro log

Android — kotlin-android

Test Status Artifacts
./tests/shared/checkout-present-and-close BrowserStack · Video · Screenshot · Maestro commands · Maestro log

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.
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-5-bitrise-remaining-jobs branch from 90a015d to 4cc6dfc Compare August 14, 2026 16:32
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/macos-ci-4-bitrise-gate branch from 4a0efcf to 1473d71 Compare August 14, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

#gsd:50662 Rebase Checkout Kit on UCP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants