Add path filtering to TS workflows to skip them for Elixir-only changes#4069
Add path filtering to TS workflows to skip them for Elixir-only changes#4069
Conversation
…kflows Use GitHub's built-in paths filter on pull_request triggers to skip TS CI for Elixir-only changes, instead of a custom check_ts_changes gate job that calls the GitHub API. - PR triggers use paths allowlist to only run for TS-related file changes - Push triggers for main and changeset-release/main always run (no filter) - ts_check_formatting now also runs on push to main/changeset-release/main - No extra permissions (pull-requests: read) or API calls needed
Dependency patches via pnpm.patchedDependencies can affect TS client behavior, so changes to patches/ should trigger TS CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Agent task markdown files don't need formatting checks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4ea2695a38
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4069 +/- ##
=======================================
Coverage 88.67% 88.67%
=======================================
Files 25 25
Lines 2438 2438
Branches 613 613
=======================================
Hits 2162 2162
Misses 274 274
Partials 2 2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Claude Code ReviewSummaryThis PR adds path filtering to TS CI workflows so they are skipped for Elixir-only PRs. Since the previous review, the implementation was simplified from an allowlist ( What's Working Well
Issues FoundCritical (Must Fix)None. Important (Should Fix)None. Suggestions (Nice to Have)
Issue ConformanceNo linked issue. Acceptable for a CI housekeeping change; the PR description explains the motivation clearly. Previous Review Status
Review iteration: 2 | 2026-03-27 |
…wlist The repo is majority TS with only a handful of Elixir packages, so ignoring the few Elixir paths is simpler and more maintainable than enumerating every TS-related path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
msfstef
left a comment
There was a problem hiding this comment.
Approved but I would keep testing TS client on changes to the sync service
| - 'packages/sync-service/**' | ||
| - 'packages/electric-telemetry/**' | ||
| - 'packages/elixir-client/**' |
There was a problem hiding this comment.
TS tests include integration tests with the sync service, so I don't think it's a bad idea to be running them with sync service changes
There was a problem hiding this comment.
This is a contentious point. In principle, we could run all tests on every changes, but it gets impractical due to the minute-long runtimes. Once a PR is opened and it then evolves via small changes, some cosmetic, some logical, having to wait for the whole CI to finish running on every push is detrimental to productivity.
I think it's a matter of discipline: if we can as a team get into the habit of shipping narrow-focused changes fast and have integration tests run at a slower cadence (cron job, release PR, pushed to main only, etc.) we can increase our velocity while keeping quality regressions in check.
There was a problem hiding this comment.
The problem is that all TS tests run right now, but having the TS client alone run with sync service changes is neither slow (they run in parallel) nor too much
happy to skip them but I'd be worried about client-server incompatibilities sneaking in - although they'd still show up on main anyway as you said so perhaps not. that much of an issue
Summary
changeset-release/mainto push triggerspushtrigger tots_check_formatting.ymlformainandchangeset-release/mainmainandchangeset-release/mainalways run TS CI (no path filtering)Approach
Uses
paths-ignoreto exclude the few non-TS paths rather than an allowlist of every TS-related path. Since the repo is majority TS, the ignore list is shorter and doesn't need updating when new TS packages or config files are added.Ignored paths:
packages/sync-service/**,packages/electric-telemetry/**,packages/elixir-client/**integration-tests/****/README.mdwebsite/**(ints_tests.ymlonly — formatting covers website)Branch protection note
GitHub treats workflows skipped due to path filtering the same as workflows where all jobs are skipped — required status checks from these workflows will not block merge for Elixir-only PRs.
Test plan
mainalways trigger TS CI🤖 Generated with Claude Code