[Phase 8] Add E2E path filtering for Bitrise#417
Draft
kieran-osgood-shopify wants to merge 1 commit into
Draft
Conversation
This was referenced Jul 7, 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. |
e6803ea to
fc3c69a
Compare
| ## PR trigger | ||
|
|
||
| `e2e/bitrise.yml` maps pull requests to the `e2e` pipeline with `trigger_map`. The GitHub checks are kept non-required while `E2E_STRICT=false`. | ||
| `e2e/bitrise.yml` maps pull requests to the `e2e` pipeline with `trigger_map`. The trigger uses Bitrise `changed_files.regex` as a coarse source-tree gate for Checkout Kit platform, protocol, shared filter, package, and E2E paths. Bitrise does not support the same named include/exclude filter objects as GitHub Actions, so app-level filtering is enforced by `e2e/config/matrix.yml` and `e2e/scripts/e2e_matrix_to_browserstack_run_plan` after the pipeline starts. |
Contributor
Author
There was a problem hiding this comment.
Suggested change
| `e2e/bitrise.yml` maps pull requests to the `e2e` pipeline with `trigger_map`. The trigger uses Bitrise `changed_files.regex` as a coarse source-tree gate for Checkout Kit platform, protocol, shared filter, package, and E2E paths. Bitrise does not support the same named include/exclude filter objects as GitHub Actions, so app-level filtering is enforced by `e2e/config/matrix.yml` and `e2e/scripts/e2e_matrix_to_browserstack_run_plan` after the pipeline starts. | |
| `e2e/bitrise.yml` maps pull requests to the `e2e` pipeline with `trigger_map`. The trigger uses Bitrise `changed_files.regex` as a coarse source-tree gate for Checkout Kit platform, protocol, shared filter, package, and E2E paths. Bitrise does not support the same named include/exclude filter objects as GitHub Actions, so `platforms` level filtering is enforced by `e2e/config/matrix.yml` and `e2e/scripts/e2e_matrix_to_browserstack_run_plan` after the pipeline starts (essentially fulfilling the same need that `dorny/paths-filter` holds in github. |
|
|
||
| Markdown and `docs/` changes are excluded by the app-level filters. A docs-only change under a coarse Bitrise trigger path can still start the lightweight run-plan workflow, but it will produce an empty run plan and skip app build, BrowserStack execution, and reporting workflows. | ||
|
|
||
| The GitHub checks are kept non-required while `E2E_STRICT=false`. |
Contributor
Author
There was a problem hiding this comment.
Suggested change
| The GitHub checks are kept non-required while `E2E_STRICT=false`. | |
| The GitHub checks are kept non-blocking while `E2E_STRICT=false`. |
|
|
||
| Shared changed-file filter groups live in `.ci/changed-file-filters.yml` and are consumed by both GitHub Actions and Bitrise E2E. Each application in `e2e/config/matrix.yml` declares `changed_files_filters` by shared group name. The run-plan producer fetches the PR file list from GitHub, applies those groups, emits only matching application rows into the BrowserStack run plan, and shares `E2E_BUILD_*` variables that gate downstream Bitrise build workflows with `run_if`. | ||
|
|
||
| Markdown and `docs/` changes are excluded by the app-level filters. A docs-only change under a coarse Bitrise trigger path can still start the lightweight run-plan workflow, but it will produce an empty run plan and skip app build, BrowserStack execution, and reporting workflows. |
Contributor
Author
There was a problem hiding this comment.
Suggested change
| Markdown and `docs/` changes are excluded by the app-level filters. A docs-only change under a coarse Bitrise trigger path can still start the lightweight run-plan workflow, but it will produce an empty run plan and skip app build, BrowserStack execution, and reporting workflows. | |
| Markdown and `docs/` changes are excluded by the `platforms` level filters at runtime during the `e2e-produce-browserstack-run-plan` workflow. A docs-only change under a coarse Bitrise trigger path can still start the lightweight ` e2e-produce-browserstack-run-plan` workflow (~15 seconds runtime), but it will produce an empty run plan and skip app build, BrowserStack execution, and reporting workflows. |
| - pull_request_source_branch: "*" | ||
| draft_pull_request_enabled: false | ||
| changed_files: | ||
| regex: '^(platforms/(swift|android|react-native)|protocol|e2e|\.ci)/.*|^Package\.(swift|resolved)$' |
Contributor
Author
There was a problem hiding this comment.
Debating whether we remove this and only rely on the run-plan platforms level filtering at runtime
It likely only saves us seconds in machine startup before the run_if determines the workflow shouldn't run
11 tasks
50ae2bd to
ac6cc38
Compare
fc3c69a to
5f078b7
Compare
ac6cc38 to
a2c10bc
Compare
5f078b7 to
5c70153
Compare
a2c10bc to
02227b8
Compare
858b9de to
ceb5011
Compare
92b0cf9 to
b7aa8b6
Compare
ceb5011 to
b08d7b3
Compare
b7aa8b6 to
c2fc448
Compare
b08d7b3 to
6959ac8
Compare
c2fc448 to
f060ca5
Compare
6959ac8 to
06860b3
Compare
f060ca5 to
a06d480
Compare
0300c1c to
4e6d041
Compare
a06d480 to
9c07373
Compare
This was referenced Jul 10, 2026
Assisted-By: devx/96a590ff-685a-49ce-8199-0810f0ac2379
4e6d041 to
f3436ba
Compare
9c07373 to
cb00a2d
Compare
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.

Why?
GitHub and Bitrise both need changed-file decisions.
Github uses
dorny/paths-filter.Bitrise has built in support for a regex, but its more limiting than what we have in Github actions.
The approach taken in bitrise is two prong:
File matching:
a. files are **implicitly ** excluded by default
b. explicitly included files will cause the workflow to run
c. unless there is explicit deny, in which case its excluded
What?
.github/filters/platform-non-docs.ymlmoved to.ci/changed-file-filters.ymlfor re-use across bitrise and .githubscripts/changed_file_filters/scripts/lib/changed_file_filters.rbhelpers for reusable changed-file filter evaluation outside GitHub Actions where we cannot usedorny/paths-filter..ci/changed-file-filters.yml.changed_files.regextrigger and uses generatedE2E_BUILD_*variables to skip unrelated Bitrise workflows.How to test