Skip to content

ci: 정책 층을 공용 재사용 워크플로로 옮긴다 - #11

Merged
mack-erel merged 1 commit into
mainfrom
ci/shared-policy
Aug 26, 2026
Merged

ci: 정책 층을 공용 재사용 워크플로로 옮긴다#11
mack-erel merged 1 commit into
mainfrom
ci/shared-policy

Conversation

@mack-erel

Copy link
Copy Markdown
Contributor

무엇이 바뀌나

secret-scan · workflow-audit · dependency-review 세 잡을 공용 재사용 워크플로 호출
하나
로 바꾼다. 다섯 저장소에 거의 동일하게 복제돼 있던 것이다.

policy:
  uses: henryj-dev/.github/.github/workflows/policy-checks.yml@f8eab73…
  permissions: { contents: read, pull-requests: write }
  secrets:
    GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}

재사용 워크플로는 부르는 저장소의 맥락에서 돈다 — 체크아웃도 이 저장소를 받고
.gitleaks.toml 도 이쪽 것을 읽는다. 예외 목록은 각자 자기 근거와 함께 갖는다.

커밋 SHA 로 박는다. @main 이면 저쪽 파일 한 줄이 이 저장소의 게이트를 바꾼다.
dependabot 이 그 SHA 를 갱신한다.

왜 — 도구가 낡는 것이 실제 동기다

gitleaks · actionlint · zizmor 는 버전과 체크섬으로 박아 받는다. 공급망 관점에서 옳지만,
dependabot 은 URL 로 받는 파일을 갱신하지 못한다.

낡은 스캐너는 빨개지지 않는다 — 새 규칙이 잡을 것을 안 잡는데 CI 는 초록이다. 조용한
실패다. 공용 저장소의 tool-freshness 가 주 1회 그 사실을 이슈로 남긴다. 버전이 한 곳에
있으니 올릴 때도 한 곳만 고친다.

함께 들어가는 것

내용
Scorecard 저장소의 자세(액션 핀·토큰 권한·브랜치 보호·릴리스 출처)를 잰다. 다섯이 같은 정책을 쓰게 된 지금 점수가 갈리는 것 자체가 드리프트 신호
주 1회 재실행 코드가 안 변해도 판정은 변한다 — 부동 태그 이미지, 새 스캐너 규칙. push·PR 만으로는 다음 커밋이 올 때까지 못 보고, 그때 빨개지면 원인을 그 커밋에서 찾게 된다

요일은 저장소마다 흩어 뒀다. 같은 시각에 다섯이 몰리면 러너를 서로 기다린다.

검증

actionlint 1.7.12 · zizmor 1.29.0 지적 0. gateneedspolicy 로 정확히 옮겨진 것을
YAML 파싱으로 확인했다.

🤖 Generated with Claude Code

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>
@mack-erel
mack-erel merged commit 5e54d6b into main Aug 26, 2026
9 checks passed
@mack-erel
mack-erel deleted the ci/shared-policy branch August 26, 2026 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant