ci: skip slow lint/code-quality/mcp/server-root-path jobs on docs/ui-only PRs - #32546
ci: skip slow lint/code-quality/mcp/server-root-path jobs on docs/ui-only PRs#32546devin-ai-integration[bot] wants to merge 1 commit into
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Greptile SummaryThis PR extends the docs/UI-only skip mechanism (from #32532) to four additional workflows —
Confidence Score: 4/5Safe to merge — the skip logic is correct and the fallback always defaults to The core classification logic in No files require special attention. The ungated setup steps in
|
| Filename | Overview |
|---|---|
| .circleci/config.yml | Adds path_filter.sh backend guard to the Windows job with shell: bash.exe for correct PowerShell-to-bash bridging. |
| .github/actions/detect-backend-changes/action.yml | Adds optional category input (default backend) passed through to classify_changes.sh; existing callers are unaffected. |
| .github/workflows/test-code-quality.yml | Adds detect-backend-changes action; all expensive steps are gated, but uv and cache setup steps still run on skipped PRs (minor overhead). |
| .github/workflows/test-linting.yml | Adds detect-backend-changes to both lint and budget-ratchet jobs; Set up Python, Set up uv, and Clean Python cache are ungated (minimal overhead); secret-scan intentionally left ungated. |
| .github/workflows/test-mcp.yml | Adds detect-backend-changes; Install dependencies and Run MCP tests are gated; Set up Python, Set up uv, and Thank You Message still run unconditionally. |
| .github/workflows/test_server_root_path.yml | Correctly uses category: client so UI-only PRs still run this e2e; always() and failure() guards are properly narrowed to avoid operating on non-existent containers when skipped. |
Reviews (1): Last reviewed commit: "ci: skip slow lint/code-quality/mcp/serv..." | Re-trigger Greptile
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…only PRs Extends the detect-relevant-changes gate from #32532 to the remaining slow PR checks so docs/ui-only PRs finish in seconds while still reporting green required checks. lint, code-quality and mcp use the backend category (skip on ui-only and docs-only); server-root-path uses the client category (skip only on pure-docs since it is a UI-serving e2e). Also guards the last unguarded CircleCI job, using_litellm_on_windows, which was running on every PR. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
cb5887b to
274f00f
Compare
Relevant issues
Follow-up to #32532 (merged); rebased onto and targeting
litellm_internal_stagingLinear ticket
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
Screenshots / Proof of Fix
This is a CI-config change, so the proof is the classification the gate uses (
.circleci/scripts/classify_changes.sh, the same script CircleCI and the composite action run) for representative diffs:So a docs-only PR skips every gated job; a ui-only PR skips the backend-only checks (lint, code-quality, mcp) but still runs the UI-serving server-root-path e2e; a backend PR runs everything, unchanged
Validated end-to-end on a throwaway docs-only PR (single README comment line, since closed):
lint,budget-ratchet,code-quality,test(mcp) and bothtest-server-root-pathlegs all reported green in seconds with their heavy steps skipped, whilesecret-scanstill ran. The server-root-path job log showedchanged files vs <base>: README.md->decision=skip-> straight to post-job cleanup (~5s instead of ~11m)Type
🚄 Infrastructure
Changes
#32532 stopped stranding required checks on ui-only PRs for the 12
test-unit-*workflows, but the other slow PR checks never had any path filter and kept running on every PR (including docs-only ones); the timings on #32539 showed server-root-path at ~11m, plus lint/code-quality/mcp and the CircleCI Windows job all running for a one-line README changeThis extends the exact same mechanism to those jobs. The steps still run inside a job that completes successfully (like CircleCI's
step halt), so required checks report green rather than sitting on "waiting for status to be reported"The
detect-backend-changescomposite action now takes acategoryinput (defaultbackend, so #32532's callers are unchanged) that it forwards toclassify_changes.sh:backend-> skip when onlyui/**,**.md,**.mdxchanged. Used bytest-linting(thelintand non-gatingbudget-ratchetjobs;secret-scanis intentionally left running on every PR),test-code-quality, andtest-mcpclient-> skip only when the change is pure docs, soui/**changes still run. Used bytest_server_root_pathbecause it is a UI-serving e2e (builds the image, curls/ui/, runs Playwright); this mirrors CircleCI'se2e_ui_testing_server_root_pathwhich is already categoryclientOn the CircleCI side,
using_litellm_on_windowswas the only job withoutskip_if_unrelated_changes, so it ran on every PR (~5m45s). It now runspath_filter.sh backendfirst; since the Windows executor defaults to PowerShell, the guard step setsshell: bash.exeso the bash script andcircleci-agent step haltresolveDeliberate call worth a look: whether server-root-path should be
client(skip only pure-docs, keep running on ui-only, as here) orbackend(also skip on ui-only). I went withclientsince it validates UI serving, but it is a one-word flip if you'd rather skip it on ui-only tooLink to Devin session: https://app.devin.ai/sessions/01543c7d72924959bdd52dc138bb4a20
Requested by: @mateo-berri