Document the ci-ios pipeline and fix the stale Ruby pin in BITRISE.md - #639
Closed
kieran-osgood-shopify wants to merge 1 commit into
Closed
Document the ci-ios pipeline and fix the stale Ruby pin in BITRISE.md#639kieran-osgood-shopify wants to merge 1 commit into
kieran-osgood-shopify wants to merge 1 commit into
Conversation
This was referenced Aug 13, 2026
Contributor
Author
|
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. |
Part of the macOS CI speed-up. Tracked on shop/issues-checkout-kit#1213, under shop/issues-checkout-kit#1202. Docs only. No behaviour change, no code path touched. ## Change **`e2e/BITRISE.md` gains a `ci-ios` section** The file described one pipeline, `e2e`. There are now two, and the second one is a merge gate, so its non-obvious properties need writing down. Three subsections: - *Its trigger carries no `changed_files`.* Unlike `e2e`, the `ci-ios` entry has no filter at all. A required check that never posts leaves a pull request permanently unmergeable, so the pipeline starts on every pull request and the cheap Linux `ci-ios-plan` workflow decides which macOS jobs are worth starting. Same two-layer idea as `e2e`, with the first layer set to "always". - *The check is self-posted.* `ci-ios-report` runs with `should_always_run: workflow`. Bitrise's own pipeline status cannot tell the two kinds of not-run apart: a job the plan did not select is a pass, a job the plan did select but that never finished is a failure. A failed `ci-ios-plan` is a failure, not a green off an empty selection. - *Changing which files select which job.* Edit `e2e/config/ios_ci.yml`, not the workflows. `e2e/test/ios_ci_run_plan_test.rb` enforces set equality between the emitted variables and the `run_if` expressions. The `## Caching` section gains a paragraph for the two caches phases 8 and 9 add, and records the trap that cost time in phase 9: `restore-cache` takes a single `key` input holding one key per line in priority order. There is no plural `keys` input, and `bitrise validate` does not catch that mistake — `e2e/test/bitrise_config_test.rb` does. **`e2e/RUNBOOK.md` gains "The iOS check failed or never posted"** The first question on a red or missing `Checkout Kit iOS` check is which of the three layers broke: the trigger, the plan, or one macOS job. The entry is keyed by symptom, in the order worth checking: | Symptom | Layer | Usual cause | | --- | --- | --- | | Never appears | Trigger | Branch head older than the `trigger_map` entry, or still a draft | | Red, every job skipped | Plan | `ci-ios-plan` failed — expired token or malformed config | | Red, names a job | One macOS job | Failed, or timed out and reported nothing | | Green, every job skipped | None | Expected on a docs, Android or web change | The last row is the one that looks wrong and is not, so it carries the command to confirm the selection is right rather than empty by accident: ```bash ruby e2e/scripts/ios_ci_run_plan selected-jobs --changed-file <path> ``` **🟡 Stale Ruby version** `BITRISE.md` claimed `ruby: 3.3.6`. `e2e/bitrise.yml` pins `3.4:installed`. The doc has been wrong since that pin changed, and it is the line a reader copies when adding a workflow. The correction also explains the `:installed` suffix, which is the part that matters: it tells each stack to use its own preinstalled 3.4.x rather than compiling one from source. ## Verification - `shadowenv exec -- ./scripts/test_ruby` — green. - The runbook command was run before it was written down. `Package.swift` prints `swift-package-tests,swift-samples,react-native-build-ios,react-native-test-ios`; `README.md` prints nothing. An earlier draft omitted the `selected-jobs` subcommand and errored with `Unknown command "--changed-file"`.
kieran-osgood-shopify
force-pushed
the
kieran-osgood/macos-ci-9-ccache
branch
from
August 13, 2026 09:22
1780924 to
e8b55e9
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/macos-ci-11-docs
branch
from
August 13, 2026 09:22
9551275 to
5ffc39b
Compare
kieran-osgood-shopify
changed the base branch from
kieran-osgood/macos-ci-9-ccache
to
graphite-base/639
August 13, 2026 11:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Part of the macOS CI speed-up. Tracked on shop/issues-checkout-kit#1213, under shop/issues-checkout-kit#1202.
Docs only. No behaviour change, no code path touched.
Change
e2e/BITRISE.mdgains aci-iossectionThe file described one pipeline,
e2e. There are now two, and the second one is amerge gate, so its non-obvious properties need writing down. Three subsections:
changed_files. Unlikee2e, theci-iosentry has nofilter at all. A required check that never posts leaves a pull request permanently
unmergeable, so the pipeline starts on every pull request and the cheap Linux
ci-ios-planworkflow decides which macOS jobs are worth starting. Same two-layeridea as
e2e, with the first layer set to "always".ci-ios-reportruns withshould_always_run: workflow.Bitrise's own pipeline status cannot tell the two kinds of not-run apart: a job the
plan did not select is a pass, a job the plan did select but that never finished is
a failure. A failed
ci-ios-planis a failure, not a green off an empty selection.e2e/config/ios_ci.yml, not theworkflows.
e2e/test/ios_ci_run_plan_test.rbenforces set equality between theemitted variables and the
run_ifexpressions.The
## Cachingsection gains a paragraph for the two caches phases 8 and 9 add, andrecords the trap that cost time in phase 9:
restore-cachetakes a singlekeyinputholding one key per line in priority order. There is no plural
keysinput, andbitrise validatedoes not catch that mistake —e2e/test/bitrise_config_test.rbdoes.e2e/RUNBOOK.mdgains "The iOS check failed or never posted"The first question on a red or missing
Checkout Kit iOScheck is which of the threelayers broke: the trigger, the plan, or one macOS job. The entry is keyed by symptom, in
the order worth checking:
trigger_mapentry, or still a draftci-ios-planfailed — expired token or malformed configThe last row is the one that looks wrong and is not, so it carries the command to
confirm the selection is right rather than empty by accident:
🟡 Stale Ruby version
BITRISE.mdclaimedruby: 3.3.6.e2e/bitrise.ymlpins3.4:installed. The doc hasbeen wrong since that pin changed, and it is the line a reader copies when adding a
workflow. The correction also explains the
:installedsuffix, which is the part thatmatters: it tells each stack to use its own preinstalled 3.4.x rather than compiling one
from source.
Verification
shadowenv exec -- ./scripts/test_ruby— green.Package.swiftprintsswift-package-tests,swift-samples,react-native-build-ios,react-native-test-ios;README.mdprints nothing. An earlier draft omitted theselected-jobssubcommandand errored with
Unknown command "--changed-file".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.