Skip to content

Task #50: Harden GitHub Actions credential and cache policies#51

Merged
postmelee merged 6 commits into
mainfrom
publish/task50
Jul 18, 2026
Merged

Task #50: Harden GitHub Actions credential and cache policies#51
postmelee merged 6 commits into
mainfrom
publish/task50

Conversation

@postmelee

@postmelee postmelee commented Jul 18, 2026

Copy link
Copy Markdown
Owner

요약

  • 대상 타스크: M04x: Harden GitHub Actions credential and cache policies #50 GitHub Actions credential/cache policy hardening
  • 왜: Checkout credential persistence와 Publish automatic package-manager cache가 암묵적 기본값에 의존하지 않도록 보안 경계를 명시하기 위해
  • 무엇: CI/Publish의 explicit false 설정, step-local preflight helper와 18-test regression 추가
  • 리뷰 포인트: Target action이 정확히 하나인 step의 with 값만 검사하며 기존 permission, Node, no-auth smoke와 plain publish 검사를 보존하는지

변경 내역

  • Stage 1 (a54117a): CI/Publish checkout credential persistence와 Publish automatic cache를 explicit false로 설정
  • Stage 2 (e1b65a8): Pure step-local policy helper, preflight 연결과 positive/negative regression 추가
  • Stage 3 (a1dd819): 134-test, advisory preflight, exact 23-file package와 dependency/sensitive boundary 통합 검증

영향 영역

영역 변경 리뷰 포인트
GitHub Actions CI/Publish explicit false input 3개 Trigger, permission, runner, action/Node version과 publish command 무변경
Release tooling Pure workflow policy helper와 preflight 연결 Global string search가 아닌 target action step-local exact false 검사
Regression Current workflow integration과 synthetic negative cases Missing, true, quoted false, wrong-step와 duplicate action 거부

작업 문서

핵심 리뷰 포인트

  • scripts/release-workflow-policy.js는 named step 경계를 들여쓰기로 제한하고 target uses:가 정확히 한 번 존재할 때 해당 with mapping의 unquoted false만 허용합니다.
  • Existing preflight의 workflow marker와 forbidden credential 검사를 유지한 채 policy assertion을 추가 호출합니다.
  • 신규 scripts/tests/workflow/task 문서는 npm artifact에 포함되지 않으며 product runtime과 public docs는 변경하지 않습니다.

검증

자동 검증

주제 검증 방법 결과 근거
전체 회귀 npm test OK 134 pass, fail/cancelled/skipped/todo 0
Workflow policy Focused Node test와 current workflow direct assertion OK 18 pass, synthetic negative case 14개와 CI/Publish current source 통과
Package artifact Isolated cache의 npm pack --dry-run --json OK 0.4.0, exact 23 files, 29,804 B, required path 존재, forbidden prefix 0
Release gate Isolated cache의 advisory release preflight OK Exit 0, FAIL 0, expected registry/tag WARN 2개, CI/Publish policy check OK
Dependency/privacy Package metadata, lockfile와 protected diff 검사 OK Package allowlist 16, runtime/dev dependency 각각 0, lockfile 없음, product/docs diff zero

수동/시나리오 검증

시나리오 확인 절차 결과 자료
Workflow 불변조건 CI/Publish diff와 action/Node/permission/publish marker를 대조 OK Stage 1 보고서
No-auth CLI --help, --version, profile --help 실행 OK Version 0.4.0, account/profile command 미실행
Package 비포함 경계 Artifact path에서 workflows, scripts, tests와 mydocs/ 확인 OK Forbidden prefix 0, repository root tarball 0

CI/원격 검증

항목 결과 근거
origin/main 기준점 OK 2026-07-19 fetch 후 task branch가 최신 origin/main 포함
npm registry advisory state OK Registry/latest 0.4.0, post-release expected warning으로 분류
CI test OK GitHub Actions run 성공
CodeQL actions OK CodeQL run 성공
CodeQL JavaScript/TypeScript OK CodeQL run 성공

검증 한계

  • Publish workflow의 실제 OIDC 실행은 이미 배포된 0.4.0의 post-release maintenance 범위에서 수행하지 않았다.

관련 이슈

  • 없음

후속 이슈 제안

  • 없음. CI package-manager metadata 또는 lockfile 도입 시 해당 변경 이슈에서 CI cache policy를 함께 검토한다.

남은 리스크

  • Helper는 repository-owned named step 구조를 전제로 하므로 action version 또는 step 구조 변경 시 regression과 함께 갱신해야 한다.
  • CI Setup Node cache policy는 이번 범위 밖이며 현재 automatic cache trigger와 lockfile이 없다.

@postmelee
postmelee merged commit 0f66948 into main Jul 18, 2026
4 checks passed
@postmelee
postmelee deleted the publish/task50 branch July 18, 2026 15:58
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