Skip to content

ci(release): release-drafter·release 워크플로 추가#24

Merged
Bori-github merged 2 commits into
mainfrom
ci/release-automation
Jul 17, 2026
Merged

ci(release): release-drafter·release 워크플로 추가#24
Bori-github merged 2 commits into
mainfrom
ci/release-automation

Conversation

@Bori-github

@Bori-github Bori-github commented Jul 17, 2026

Copy link
Copy Markdown
Owner

📝 작업 내용

로컬에만 있던 릴리즈 자동화를 추적 대상으로 올립니다. 커밋 2개입니다.

1. 워크플로 추가

  • .github/workflows/release-drafter.yml — main push 시 머지된 PR을 모아 Draft 릴리즈 본문 갱신 (publish: false)
  • .github/release-drafter.yml — 액션의 설정 파일.
    workflows/ 안에 두면 GitHub이 워크플로로 파싱하려다 실패하므로 .github/ 바로 아래에 있어야 합니다 (액션의 기본 조회 경로).
  • .github/workflows/release.ymlzpl-core/v*, react-zpl/v* 태그 push 시 GitHub Release 생성. 이미 존재하면 스킵.

카테고리 라벨을 레포 실제 라벨(feature/fix/docs/chore)에 맞췄습니다. 없는 changelog:* 네임스페이스를 새로 파는 대신, 이미 20건의 PR에 붙어 쓰이던 라벨을 활용합니다. ci 타입 커밋은 chore로 흡수합니다.

2. release.yml 정확성 3건

  • 태그 버전 ↔ package.json 대조 후 불일치 시 중단
    버전을 package.json에서만 읽어서 zpl-core/v0.2.0 태그에 package.json이 0.1.0이면 조용히 "v0.1.0" 제목의 Release가 생성됐습니다.
  • --notes-start-tag로 노트 범위를 같은 패키지로 한정
    --generate-notes만 쓰면 gh가 패키지와 무관하게 직전 "릴리즈"를 기준으로 삼습니다. 두 네임스페이스가 번갈아 나가므로 react-zpl 노트에 zpl-core 커밋이 섞였습니다.
    ⚠️ versionsort.suffix=-rc를 주는 이유: git 기본 정렬은 v0.1.0v0.1.0-rc.1보다 앞에 둡니다(semver는 반대). react-zpl이 0.1.0-rc.1이라 바로 다음 릴리즈가 이 케이스에 걸립니다.
  • TITLE을 run 블록 보간 대신 env로 — 출처가 태그 시점 레포의 package.json이라 따옴표가 섞이면 셸로 탈출 가능.

🔍 변경 범위

  • 기타 — 워크플로 3개

📚 추가 정보

남은 설계 결정 하나: 드래프터의 초안과 release.yml--generate-notes서로 무관합니다. 초안은 계속 초안으로 남고, 태그를 찍으면 별개의 릴리즈가 GitHub 자동 노트로 생성됩니다. 의도적이라면 그대로 두면 되고, 연결하려면 publish: true로 초안을 발행하거나 .github/release.yml(네이티브 노트 설정)로 카테고리화하는 방법이 있습니다.

태그 형식과 직전 태그 추출 로직은 실제 git 저장소에 가상 태그 세트를 만들어 검증했습니다.

스택 5/6

🤖 Generated with Claude Code

@Bori-github Bori-github added the chore Maintenance, tooling, or CI — no user-facing change label Jul 17, 2026
@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
zpl-viewer Ignored Ignored Preview Jul 17, 2026 7:25am

@Bori-github Bori-github self-assigned this Jul 17, 2026
@Bori-github
Bori-github force-pushed the ci/release-automation branch from 85e87ad to b1ed97d Compare July 17, 2026 07:16
@Bori-github
Bori-github force-pushed the ci/release-automation branch from b1ed97d to a760cf4 Compare July 17, 2026 07:21
@Bori-github
Bori-github force-pushed the ci/release-automation branch from a760cf4 to ce1de6b Compare July 17, 2026 07:23
@Bori-github
Bori-github force-pushed the ci/release-automation branch from ce1de6b to b74864e Compare July 17, 2026 07:23
Bori-github and others added 2 commits July 17, 2026 16:25
로컬에만 있던 릴리즈 자동화를 추적 대상으로 올린다.

- .github/workflows/release-drafter.yml
  main push 시 머지된 PR을 모아 Draft 릴리즈 본문을 갱신 (publish: false)
- .github/release-drafter.yml
  액션의 설정 파일. workflows/ 안에 두면 GitHub이 워크플로로 파싱하려다
  실패하므로 .github/ 바로 아래에 있어야 한다 (액션의 기본 조회 경로)
- .github/workflows/release.yml
  zpl-core/v*, react-zpl/v* 태그 push 시 GitHub Release 생성.
  이미 존재하면 스킵

카테고리 라벨을 레포 실제 라벨에 맞춤:
- changelog:feature|fix|docs|chore → feature|fix|docs|chore
  기존 라벨(enhancement·documentation·bug)을 feature·docs·fix로 개명하고
  chore를 새로 만들어 대응시켰음. 없는 라벨 네임스페이스를 새로 파는 대신
  이미 20건의 PR에 붙어 쓰이던 라벨을 그대로 활용
- exclude-labels: skip-changelog 제거 — 존재하지 않는 라벨이라 무의미했음
- ci 타입 커밋은 chore 카테고리로 흡수 (릴리즈 노트 독자에게 구분 실익 없음)

checkout@v4 → v6 (나머지 6개 워크플로와 통일)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 태그 버전과 package.json 버전 대조 후 불일치 시 중단
  버전을 package.json에서만 읽어서, zpl-core/v0.2.0 태그에 package.json이
  0.1.0이면 조용히 "v0.1.0" 제목의 Release가 생성됐음

- --notes-start-tag로 노트 범위를 같은 패키지로 한정
  --generate-notes만 쓰면 gh가 패키지와 무관하게 직전 "릴리즈"를 기준으로
  삼는다. zpl-core/v*와 react-zpl/v*가 번갈아 나가므로 react-zpl 릴리즈
  노트에 zpl-core 커밋이 섞였다.
  같은 네임스페이스에서 버전 순 바로 앞 태그를 찾아 넘긴다. 첫 릴리즈면
  생략한다. versionsort.suffix=-rc를 주는 이유는 git 기본 정렬이
  v0.1.0을 v0.1.0-rc.1보다 앞에 두기 때문이다(semver는 반대) —
  react-zpl이 0.1.0-rc.1이라 바로 다음 릴리즈가 이 케이스에 걸린다

- TITLE을 run 블록 보간 대신 env로 전달
  ${{ steps.meta.outputs.title }}의 출처가 태그 시점 레포의 package.json
  name/version이라 따옴표가 섞이면 셸로 탈출 가능

태그 형식(zpl-core/v0.1.0, react-zpl/v0.1.0-rc.1)과 직전 태그 추출 로직은
실제 git 저장소에 가상 태그 세트를 만들어 검증함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Bori-github
Bori-github force-pushed the ci/release-automation branch from b74864e to efd2f89 Compare July 17, 2026 07:25
@Bori-github
Bori-github changed the base branch from ci/quality-gates to main July 17, 2026 07:25
@Bori-github
Bori-github merged commit 1c5afbf into main Jul 17, 2026
4 checks passed
@Bori-github
Bori-github deleted the ci/release-automation branch July 17, 2026 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance, tooling, or CI — no user-facing change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant