ci: 정책 층을 공용 재사용 워크플로로 옮긴다 - #11
Merged
Merged
Conversation
secret-scan · workflow-audit · dependency-review 세 잡이 다섯 저장소에 거의 동일하게 복제돼 있었다. 지금은 같지만 같은 상태가 유지된다는 보장이 없고, 갈라지기 시작하면 어느 쪽이 기준인지 알 방법이 없다. `henryj-dev/.github` 의 재사용 워크플로 하나를 커밋 SHA 로 부른다(`@main` 이면 저쪽 파일 한 줄이 이 저장소의 게이트를 바꾼다 — dependabot 이 그 SHA 를 갱신한다). 재사용 워크플로는 **부르는 저장소의 맥락에서** 돈다. 체크아웃도 이 저장소를 받고 `.gitleaks.toml` 도 이쪽 것을 읽는다 — 예외 목록은 각자 자기 근거와 함께 갖는다. 이 묶음의 실제 동기는 **도구가 낡는 것**이다. gitleaks·actionlint·zizmor 는 버전과 체크섬으로 박아 받는데(공급망 관점에서 옳다) dependabot 은 URL 로 받는 파일을 갱신하지 못한다. 낡은 스캐너는 빨개지지 않는다 — 새 규칙이 잡을 것을 안 잡는데 CI 는 초록이다. 공용 저장소의 `tool-freshness` 가 주 1회 그것을 이슈로 남긴다. Scorecard 를 새로 넣는다. 재는 것은 코드가 아니라 **저장소의 자세**(액션 핀 · 토큰 권한 · 브랜치 보호 · 릴리스 출처)이고, 다섯이 같은 정책을 쓰게 된 지금은 **점수가 갈리는 것 자체가 드리프트 신호**다. 주 1회 재실행을 붙인다. 코드가 안 변해도 판정은 변한다 — 부동 태그로 받는 이미지가 바뀌고 스캐너에 새 규칙이 붙는다. push 와 PR 로만 도는 게이트는 그 변화를 다음 커밋이 올 때까지 못 보고, 그때 빨개지면 원인을 그 커밋에서 찾게 된다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
무엇이 바뀌나
secret-scan·workflow-audit·dependency-review세 잡을 공용 재사용 워크플로 호출하나로 바꾼다. 다섯 저장소에 거의 동일하게 복제돼 있던 것이다.
재사용 워크플로는 부르는 저장소의 맥락에서 돈다 — 체크아웃도 이 저장소를 받고
.gitleaks.toml도 이쪽 것을 읽는다. 예외 목록은 각자 자기 근거와 함께 갖는다.커밋 SHA 로 박는다.
@main이면 저쪽 파일 한 줄이 이 저장소의 게이트를 바꾼다.dependabot 이 그 SHA 를 갱신한다.
왜 — 도구가 낡는 것이 실제 동기다
gitleaks · actionlint · zizmor 는 버전과 체크섬으로 박아 받는다. 공급망 관점에서 옳지만,
dependabot 은 URL 로 받는 파일을 갱신하지 못한다.
낡은 스캐너는 빨개지지 않는다 — 새 규칙이 잡을 것을 안 잡는데 CI 는 초록이다. 조용한
실패다. 공용 저장소의
tool-freshness가 주 1회 그 사실을 이슈로 남긴다. 버전이 한 곳에있으니 올릴 때도 한 곳만 고친다.
함께 들어가는 것
요일은 저장소마다 흩어 뒀다. 같은 시각에 다섯이 몰리면 러너를 서로 기다린다.
검증
actionlint 1.7.12 · zizmor 1.29.0 지적 0.
gate의needs가policy로 정확히 옮겨진 것을YAML 파싱으로 확인했다.
🤖 Generated with Claude Code