Skip to content

Port the remaining macOS checks to the Bitrise ci-ios pipeline - #911

Draft
kieran-osgood-shopify wants to merge 2 commits into
mainfrom
bitrise-ci-ios-port-lint-and-api-checks
Draft

kieran-osgood-shopify wants to merge 2 commits into
mainfrom
bitrise-ci-ios-port-lint-and-api-checks

Conversation

@kieran-osgood-shopify

@kieran-osgood-shopify kieran-osgood-shopify commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

What changes are you making?

After #910, four macOS checks still ran on GitHub Actions.

This PR moves them into the Bitrise ci-ios pipeline, so no macos PR check runs on a GitHub macOS runner any more.

GitHub job (deleted) ci-ios job Command
Swift / SwiftFormat & SwiftLint swift-lint platforms/swift/Scripts/lint check --verbose --skip-pod
Swift / CocoaPods swift-podspec-lint pod lib lint ShopifyCheckoutKit.podspec --allow-warnings
Breaking Changes / Swift swift-api-check platforms/swift/Scripts/api check
React Native / SwiftFormat & SwiftLint react-native-lint-ios platforms/react-native/scripts/lint_swift check
  • Each job runs when the same files change as on GitHub Actions: the Swift filters for the three Swift jobs, and the React Native filters for the bridge lint. The bridge lint does not run on a Package.swift-only change, because it lints Swift source only.
  • The Linux SwiftLint annotation jobs in swift-lint.yml and rn-lint.yml stay on GitHub Actions.
  • The .github/actions/setup-mint action has no remaining users, so this PR deletes it.
  • lint_swift now requires Mint-resolved tools when CI=true. Before, it checked GITHUB_ACTIONS, which Bitrise does not set.

Timings, 5 runs each

GitHub "before" times come from the last 5 successful CI runs. Bitrise "after" times come from 5 manual ci-ios runs of this branch with every job selected: #2319, #2324, #2337, #2340, #2343. Run 1 had a cold cache for the new Swift gems.

Check GitHub job time (mean) Bitrise job time (mean) Bitrise wait for a Mac (median)
Swift / SwiftFormat & SwiftLint → ci-ios-swift-lint 21s 21s 39s
Swift / CocoaPods → ci-ios-swift-podspec-lint 196s 88s 22s
Breaking Changes / Swift → ci-ios-swift-api-check 171s 80s 27s
React Native / SwiftFormat & SwiftLint → ci-ios-react-native-lint-ios 16s 19s 45s
Required check Before After
ci-ios pipeline, all jobs selected 5.7m (median 5.9m) 5.4m (median 5.3m)

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 embeddedCheckoutProtocolAndroidRelease 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
  • Kit's embeddedCheckoutProtocolAndroid still references an available Maven Central release
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
  • The ECP version in embeddedCheckoutProtocolAndroid is published, and normal Android CI passes against it
Releasing a new React Native version?
  • I have bumped version in platforms/react-native/modules/@shopify/checkout-kit-react-native/package.json
  • Any updated checkoutKit.nativeSdkVersions pins are available on Maven Central/CocoaPods
  • Normal RN Android tests and the sample build pass against the published SDK, without --local or USE_LOCAL_SDK=1

Tip

See the Contributing documentation for the full release process per platform.
Changes spanning ECP, Android, and RN follow the dependency release sequence.

@kieran-osgood-shopify
kieran-osgood-shopify added this pull request to stack #912 October 6, 2026 11:05
@github-actions github-actions Bot added the #gsd:50662 Rebase Checkout Kit on UCP label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Bundle Size Budgets

Budget Size Limits Result
React Native npm package (gzip) 119.62 KiB (0 B) 130 KiB soft / 150 KiB hard ✅ Within budget

Bundle and package size

Web bundle sizes cover shipped runtime JavaScript. Package sizes cover the full published archive, including any source maps, declarations, and documentation it contains.

Platform Measurement Compression Base Head Delta
React Native npm package (.tgz) gzip 119.6 KiB 119.6 KiB 0 B
React Native package files (uncompressed)

These are uncompressed file sizes; they do not sum to the compressed package size above.

File Base Head Delta
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.ts 108.7 KiB 108.7 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.d.ts 73.1 KiB 73.1 KiB 0 B
android/src/main/java/com/shopify/reactnative/checkoutkit/ShopifyCheckoutKitModule.java 16.2 KiB 16.2 KiB 0 B
ios/ShopifyCheckoutKit.swift 16.1 KiB 16.1 KiB 0 B
ios/AcceleratedCheckoutButtons.swift 14.1 KiB 14.1 KiB 0 B
src/components/AcceleratedCheckoutButtons.tsx 13.0 KiB 13.0 KiB 0 B
src/index.ts 12.7 KiB 12.7 KiB 0 B
lib/commonjs/index.js 12.4 KiB 12.4 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js 11.4 KiB 11.4 KiB 0 B
src/index.d.ts 11.3 KiB 11.3 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js.map 10.4 KiB 10.4 KiB 0 B
lib/module/index.js 10.4 KiB 10.4 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js 10.2 KiB 10.2 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.ts 9.5 KiB 9.5 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js.map 9.1 KiB 9.1 KiB 0 B
lib/module/index.js.map 8.1 KiB 8.1 KiB 0 B
src/present-dispatcher.ts 8.0 KiB 8.0 KiB 0 B
lib/commonjs/index.js.map 7.9 KiB 7.9 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolRenameMap.ts 7.8 KiB 7.8 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.d.ts 7.6 KiB 7.6 KiB 0 B
…and 117 smaller files
How sizes are measured

Measured from the PR base SHA and PR head SHA. Web bundle rows sum shipped .js, .mjs, and .cjs files under dist/, excluding source maps and declarations. The gzip bundle size sums files compressed individually with gzip -n -9. npm package sizes are gzip-compressed .tgz archives; Android AAR sizes are ZIP archives. Package sizes are not final app binary sizes.

Base automatically changed from remove-swift-test-gha to main October 6, 2026 12:31
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the bitrise-ci-ios-port-lint-and-api-checks branch from d130401 to ae98229 Compare October 6, 2026 12:31
Four macOS jobs still ran on GitHub Actions after the ci-ios port:
Swift SwiftFormat & SwiftLint, the CocoaPods podspec lint, the Swift
public API baseline check, and React Native SwiftFormat & SwiftLint.

Add them to ci-ios as swift-lint, swift-podspec-lint, swift-api-check,
and react-native-lint-ios, with the same commands and the same
changed-file selection GitHub Actions used, and delete the GitHub
copies. The Linux SwiftLint annotation jobs stay on GitHub Actions.

setup-mint has no remaining user, so it goes too. lint_swift now
requires Mint-resolved tools on any CI, not only GitHub Actions.
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the bitrise-ci-ios-port-lint-and-api-checks branch from ae98229 to e36b306 Compare October 7, 2026 08:34
The ci-ios-swift-podspec-lint gem cache never hit. Bitrise's Ruby
platform is missing from platforms/swift/Gemfile.lock, so bundle install
rewrites the lockfile, and save-cache keyed on it saved under a different
key than restore-cache looked up. Key on a snapshot of the committed
lockfile instead.

Also pin the real config's selection for the React Native bridge lint,
correct test comments left over from the four-job port, point the
linter-bump PR at close-and-reopen now that swift-lint.yml no longer runs
the pinned linters, and name the required ci/bitrise/ci-ios/pr check in
CONTRIBUTING.md.

This branch has not been deployed

No deployments
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.

1 participant