Scope protocol CI checks by affected binding - #546
Merged
Conversation
Contributor
Author
kiftio
marked this pull request as ready for review
July 29, 2026 11:33
Package Size
Web file breakdown
React Native file breakdown
Android file breakdown
Measured from the PR base SHA and PR head SHA. The file breakdown shows uncompressed sizes within each package artifact, so individual files do not sum to the compressed artifact total. This comment reports package artifact sizes only; it is not a final app binary-size report. |
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
|
This was referenced Jul 29, 2026
Merged
kiftio
force-pushed
the
07-29-scope_protocol_ci_checks_by_affected_binding
branch
from
July 29, 2026 13:37
2ce6928 to
1411d68
Compare
This was referenced Jul 30, 2026
kiftio
force-pushed
the
07-29-scope_protocol_ci_checks_by_affected_binding
branch
2 times, most recently
from
July 31, 2026 09:14
d8b67fa to
042dbb8
Compare
kiftio
commented
Jul 31, 2026
| reactNativeAndroid: ${{ steps.platform.outputs.reactNative == 'true' || steps.platform.outputs.protocolTypescript == 'true' || steps.infra.outputs.reactNativeCommon == 'true' || steps.infra.outputs.reactNativeAndroid == 'true' }} | ||
| web: ${{ steps.platform.outputs.web == 'true' || steps.infra.outputs.web == 'true' }} | ||
| protocol: ${{ steps.platform.outputs.protocol == 'true' || steps.infra.outputs.protocol == 'true' }} | ||
| android: ${{ steps.platform.outputs.android == 'true' || steps.platform.outputs.protocolKotlin == 'true' || steps.platform.outputs.protocolShared == 'true' || steps.infra.outputs.android == 'true' }} |
Contributor
Author
There was a problem hiding this comment.
main diff is here,
moving form protocol to protocolKotlin || protocolShared
to avoid building for protocolSwift changes
and down below in the same way for swift
(and the same in package-size.yml)
tiagocandido
reviewed
Aug 3, 2026
tiagocandido
approved these changes
Aug 3, 2026
kiftio
force-pushed
the
07-29-scope_protocol_ci_checks_by_affected_binding
branch
from
August 3, 2026 12:37
042dbb8 to
8351991
Compare
Assisted-By: devx/4075c309-3611-4ac8-9ea7-26a8974e7963
kiftio
force-pushed
the
07-29-scope_protocol_ci_checks_by_affected_binding
branch
from
August 3, 2026 13:29
8351991 to
3c8d794
Compare
Contributor
Author
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.

What changes are you making?
Make protocol triggers a bit more granular.
I felt like we ran a lot of unnecessary checks here for a
protocol-tsonly change (i.e. we ran native android/swift checks).In retrospect, as ts includes quicktype, it was probably correct to run all tests. However, there's still potential for improvement, where swift protocol changes should not build android and vice-versa
The second and third rows are the main ones of interest.
Implementation
Uses these filters from .ci/changed-file-filters.yml:
protocolKotlin- (existing) generated Kotlin protocol bindings under protocol/languages/kotlin/**protocolSwift- (existing) generated Swift protocol bindings under protocol/languages/swift/**protocolTypescript- (existing) generated TypeScript protocol bindings under protocol/languages/typescript/**protocolShared- (new) schemas, service definitions, source-lock updates, code generators, and Protocol Node toolingThe CI workflow, package-size workflow, and E2E matrix now consume the appropriate language-specific or shared filter rather than using the broad protocol filter.
Shared inputs remain conservative: they trigger all affected platform validation because they can change generated bindings or the tooling that produces and validates them. The optimization is limited to generated language-binding changes, which now run only the checks for their actual consumers.
How to test
scripts/test/changed_file_filters_test.rb, covering thatprotocol/package.jsonmatches onlyprotocolToolingand thatprotocol/schemas/ucp.jsonmatches onlyprotocolShared.e2e/test/e2e_matrix_to_browserstack_run_plan_test.rb, confirming that a change toprotocol/schemas/ucp.jsonselects all four applications.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.