fix(ci): skip docs-only changes for clusterfuzzlite and container-image - #793
fix(ci): skip docs-only changes for clusterfuzzlite and container-image#793seonghobae wants to merge 5 commits into
Conversation
Org-wide audit found these workflows had no paths-ignore filter, triggering full CI on every push/PR including docs-only changes and adding to org Actions queue congestion. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Important Approval pendingCodeRabbit has no unresolved comments, but it has not reviewed the latest commit. Use the checkbox below to review the latest commit. CodeRabbit will approve the changes if it finds no blocking issues.
📝 WalkthroughWalkthrough두 GitHub Actions 워크플로우가 문서 전용 pull request를 실행하지 않도록 경로 필터를 추가했습니다. 새 테스트는 Markdown 패턴과 컨테이너 태그 릴리스 조건을 검증합니다. ChangesCI 경로 필터링
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: 🔵 Low · up to This change skips the ClusterFuzzLite and container-image workflows for documentation-only pull requests. The intended filters are present, but the accompanying test does not reliably verify their placement and complete path set, so a small follow-up is needed to keep this CI behavior protected. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 1 files. (2 skipped: 2 unsupported.) ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| paths-ignore: | ||
| - "docs/**" | ||
| - "manual/**" | ||
| - "**.md" |
There was a problem hiding this comment.
🟡 대규모 혼합 PR의 검증 누락
변경 파일이 300개를 넘고 코드가 비교 목록 밖이면, paths-ignore와 컨테이너 필터는 워크플로를 건너뜁니다. 코드 변경이 퍼징과 컨테이너 빌드 없이 통과합니다.
Prompt for agents
GitHub Actions의 pull_request 경로 필터는 생성된 변경 파일 목록 중 처음 300개만 평가합니다. .github/workflows/clusterfuzzlite.yml과 .github/workflows/container-image.yml의 paths-ignore 때문에, 앞쪽 300개가 docs/**, manual/** 또는 **.md이고 코드 파일이 그 뒤에 있는 대규모 혼합 PR은 두 검증을 실행하지 않습니다. 워크플로 자체는 모든 PR에서 시작하되 전체 변경 집합을 확인하는 사전 작업으로 문서 전용 여부를 판정하고, 비용이 큰 작업만 조건부로 실행하는 방식 등 300파일 제한을 받지 않는 구조로 바꾸십시오. 두 워크플로에 동일한 동작을 적용하고 대규모 혼합 변경 회귀 사례를 검증하십시오.
Was this helpful? React with 👍 or 👎 to provide feedback.
| def _paths_ignore(block: list[str]) -> set[str]: | ||
| """Read the ``paths-ignore`` list from one event block without quote coupling.""" | ||
| try: | ||
| start = block.index(" paths-ignore:") | ||
| except ValueError as exc: | ||
| raise AssertionError("event is missing paths-ignore") from exc | ||
|
|
||
| entries: set[str] = set() | ||
| for line in block[start + 1 :]: | ||
| if not line.startswith(" - "): | ||
| break | ||
| entries.add(line.removeprefix(" - ").strip().strip("'\"")) | ||
| return entries |
| paths-ignore: | ||
| - "docs/**" | ||
| - "manual/**" | ||
| - "**.md" |
|
docs-only ClusterFuzzLite/container 경로 필터와 관련 회귀 검증은 #784 exact head 3ba1add4088e7e328feda5f277c9a2e98327de9e에 완전히 승계됐고, 같은 PR 단위 concurrency까지 함께 보강했습니다. |
What
Narrows two expensive, non-required workflows on documentation-only pull requests:
.github/workflows/clusterfuzzlite.yml.github/workflows/container-image.ymlEach
pull_request.paths-ignorenow coversdocs/**,manual/**, and**.md.manual/**is required because the product manual contains non-Markdown assets as well as Markdown; filtering only**.mdstill sent image/other manual-only PRs through ClusterFuzzLite and multi-architecture image builds.The container image workflow retains its
push.tags: ['v*']release trigger withoutpaths-ignore; tag-release behavior is unchanged.tests/test_ci_path_filter_contract.pynow inspects thepull_requestevent block structurally rather than searching the whole YAML text, and requires the exact documentation-only filter set independently for both workflows.TDD / repair trace
manual/assets still triggered both expensive workflows, and the regression test could pass if filter strings moved under the wrong event;9e8bbe744542e5816f21f28130990c659eb8e424: requireddocs/**,manual/**, and**.mdspecifically underpull_request; the then-current workflow definitions lackedmanual/**;b09ac9e9069215455d15a93236a196c254f09ffa: ClusterFuzzLite caller;a1910e652f9fcf28116175c7bda62af2b1fec296: container-image caller and current exact head.Safety / acceptance
fuzz,image, norimage-nvidiais a required branch-protection check ondevelop.docs/**,manual/**, and**.mdstill triggers the relevant workflow.workflow_dispatchremain unaffected.a1910e652f9fcf28116175c7bda62af2b1fec296(or a verified descendant). Queued/pending/startup-failed evidence is not success.Reference: GitHub Actions workflow syntax for
paths/paths-ignore: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore