Skip to content

ci: 릴리즈 전략을 release-please로 전환 - #88

Merged
6-keem merged 2 commits into
mainfrom
ci/release-please
Jun 13, 2026
Merged

ci: 릴리즈 전략을 release-please로 전환#88
6-keem merged 2 commits into
mainfrom
ci/release-please

Conversation

@6-keem

@6-keem 6-keem commented Jun 13, 2026

Copy link
Copy Markdown
Member

Closes #87

변경 내용

"main 머지 = 자동 릴리즈" 결합을 풀고 release-please 기반 트렁크 릴리즈로 전환.

  • release-please.yml: main 머지는 Release PR만 갱신 → Release PR 머지 시에만 발행(태그+GitHub Release). publish job이 zip 첨부 + Chrome 스토어 발행(stub) + Discord 알림
  • release-beta.yml: 수동 dispatch로 vX.Y.Z-beta.N 프리릴리즈 발행 (별도 베타 브랜치 없음)
  • 버전은 Conventional Commits에서 자동 산출 → 🔖 라벨 불필요
  • 기존 release.yaml(라벨/PR-머지 트리거/Environment 게이트) 제거
  • pr-checks: release-please Release PR은 이슈 참조 가드 예외
  • README 배지 버전 마커, CONTRIBUTING/CLAUDE.md 문서 갱신

변경 유형

  • ⚙️ 빌드/CI

체크리스트

- release-please-config.json / .release-please-manifest.json 추가
- release-please.yml: main 머지는 Release PR만 갱신, Release PR 머지 시 발행
  + zip 첨부 + Chrome 스토어 발행 stub + Discord 알림
- release-beta.yml: 수동 dispatch 베타(prerelease) 발행
- 기존 라벨/PR-머지 트리거/Environment 게이트 방식의 release.yaml 제거
- pr-checks: release-please Release PR은 이슈 참조 가드 예외 처리
- README 배지에 release-please 버전 마커 추가
- CONTRIBUTING/CLAUDE.md 릴리즈 전략 문서 갱신

Closes #87
@github-actions github-actions Bot added the ci CI/CD 설정 변경 label Jun 13, 2026
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7827abf8-1e23-41a4-839a-25a6dfa3c354

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

라벨 기반 릴리즈 트리거에서 Release-Please 기반 트렁크 릴리즈로 전환: Release PR은 커밋 타입에서 자동 생성, Release PR 머지 시에만 빌드·발행, 베타는 수동 dispatch로 배포, 기존 워크플로우 제거 및 문서 업데이트.

Changes

Release-Please 자동화 시스템 도입

Layer / File(s) Summary
Release-Please 설정 및 버전 관리
release-please-config.json, .release-please-manifest.json
Release-Please 스키마 및 패키지 메타데이터(release-type: node, package-name: dotbugi) 설정, CHANGELOG 경로 지정, 버전 매니페스트 초기값 5.0.5 설정.
트렁크 기반 Release-Please 워크플로우
.github/workflows/release-please.yml
Main push 트리거로 Release-Please 실행해 Release PR 자동 생성/머지; release_created 조건에서 publish 잡 실행으로 Node.js 빌드→dist zip 생성→GitHub Release 업로드→vars.ENABLE_STORE_PUBLISH 조건으로 stable 확장 게시→Discord 알림(항상) 전송.
수동 베타 배포 워크플로우
.github/workflows/release-beta.yml
Workflow dispatch로 수동 실행되는 베타 릴리즈: 버전 태그를 vX.Y.Z-beta.${GITHUB_RUN_NUMBER} 형식으로 계산, 빌드·zip 생성, GitHub prerelease 생성(커밋 SHA 포함), vars.ENABLE_STORE_PUBLISH 조건으로 베타 Web Store 게시, 항상 Discord 임베드 알림 전송.
PR 검사 가드 예외 처리
.github/workflows/pr-checks.yml
Release-Please 자동 생성 Release PR(release-please-- head ref 판별)은 PR 본문 이슈 참조 검증에서 즉시 종료, 정규식 검사 및 실패 처리 스킵.
릴리즈 전략 문서화
CLAUDE.md, CONTRIBUTING.md, README.md
release-please.ymlrelease-beta.yml 워크플로우 역할 정의, Conventional Commits 기반 버전 산출 규칙, 수동 베타 발행 절차 명시; 기존 라벨/승인 게이트 정책 제거; README에 release-please 버전 주석 추가.

Sequence Diagram(s)

sequenceDiagram
  participant Developer as 개발자
  participant Main as Main 브랜치
  participant RPJob as release-please 잡
  participant PublishJob as publish 잡
  participant GH as GitHub Release
  participant Store as Chrome Web Store
  participant Discord as Discord 웹훅
  Developer->>Main: feature 커밋 (Conventional Commits)
  Main->>RPJob: push 트리거
  RPJob->>RPJob: Release PR 생성 (버전/CHANGELOG 자동)
  Developer->>RPJob: Release PR 검토 & 머지
  RPJob->>PublishJob: release_created=true 신호
  PublishJob->>PublishJob: npm ci & build
  PublishJob->>PublishJob: dist → zip 압축
  PublishJob->>GH: Release 생성 (zip 첨부, 태그)
  alt ENABLE_STORE_PUBLISH = true
    PublishJob->>Store: stable 확장 게시
  end
  PublishJob->>Discord: 성공 임베드 전송
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 분

Possibly related PRs

  • hs-shell/dotbugi#86: PR 본문 이슈 참조 검증 로직을 .github/workflows/pr-checks.yml에 처음 도입했으며, 이번 PR이 release-please 자동 생성 Release PR을 그 가드에서 예외 처리하는 후속 연결 변경입니다.

Suggested labels

🧹 chore, 📝 docs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 release-please로 의 릴리즈 전략 전환이라는 주요 변경사항을 명확하게 요약하고 있습니다.
Linked Issues check ✅ Passed PR의 모든 코드 변경이 #87의 목표를 충족합니다: release-please 설정 추가, 워크플로우 구현, 기존 release.yaml 제거, PR 검사 예외 처리, 문서 갱신이 모두 포함되어 있습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 #87의 릴리즈 전략 전환 범위 내에 있습니다. 관련 워크플로우, 설정, 문서 업데이트가 적절하게 포함되어 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/release-please

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/release-beta.yml (1)

28-32: 💤 Low value

베타 버전 계산 로직에서 sed 호환성을 확인해주세요.

Line 31에서 sed 's/-.*//'를 사용해 기존 버전 서픽스를 제거합니다. 이 명령은 Linux (gnu-sed)에서는 안정적이지만, 기본 sed가 다를 수 있는 환경에서 호환성 문제가 발생할 수 있습니다.

현재 runs-on: ubuntu-latest이므로 실제 실행 환경에서는 문제가 없지만, 명확성을 위해 다음과 같이 작성하는 것을 권장합니다:

BASE=$(node -p "require('./package.json').version" | cut -d'-' -f1)

또는 순수 Node.js로:

BASE=$(node -p "require('./package.json').version.replace(/-.*/, '')")

현재 형태도 작동하므로 선택 사항입니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release-beta.yml around lines 28 - 32, The current beta
version calculation uses a sed expression in the "베타 버전 계산" step (id: ver) to
strip the suffix: BASE=$(node -p "require('./package.json').version" | sed
's/-.*//'); replace that with a more portable command such as using cut:
BASE=$(node -p "require('./package.json').version" | cut -d'-' -f1) or with a
pure-Node expression: BASE=$(node -p
"require('./package.json').version.replace(/-.*/, '')") so the suffix removal is
compatible across environments.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CLAUDE.md`:
- Around line 129-131: Update the Discord release-notification description: in
CLAUDE.md replace the sentence claiming "Release notifications are sent inline
from `release.yaml`" with a statement that release notifications are sent
directly by `release-please.yml` (stable = green) and `release-beta.yml` (beta =
yellow), and keep the existing description that `discord-notify.yml` handles
issue/PR/CI notifications; reference the three workflow names
(`discord-notify.yml`, `release-please.yml`, `release-beta.yml`) so readers see
which workflows send which notifications.

---

Nitpick comments:
In @.github/workflows/release-beta.yml:
- Around line 28-32: The current beta version calculation uses a sed expression
in the "베타 버전 계산" step (id: ver) to strip the suffix: BASE=$(node -p
"require('./package.json').version" | sed 's/-.*//'); replace that with a more
portable command such as using cut: BASE=$(node -p
"require('./package.json').version" | cut -d'-' -f1) or with a pure-Node
expression: BASE=$(node -p "require('./package.json').version.replace(/-.*/,
'')") so the suffix removal is compatible across environments.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: b0dcbf07-0edf-4cbd-a51e-bce65e91a93b

📥 Commits

Reviewing files that changed from the base of the PR and between 37e07fa and 09571c2.

📒 Files selected for processing (9)
  • .github/workflows/pr-checks.yml
  • .github/workflows/release-beta.yml
  • .github/workflows/release-please.yml
  • .github/workflows/release.yaml
  • .release-please-manifest.json
  • CLAUDE.md
  • CONTRIBUTING.md
  • README.md
  • release-please-config.json
💤 Files with no reviewable changes (1)
  • .github/workflows/release.yaml

Comment thread CLAUDE.md Outdated
@6-keem
6-keem merged commit 6cb2925 into main Jun 13, 2026
3 checks passed
@6-keem
6-keem deleted the ci/release-please branch June 13, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD 설정 변경

Projects

None yet

Development

Successfully merging this pull request may close these issues.

릴리즈 전략 전환: release-please 도입 (merge=release 결합 해제)

1 participant