feat: 베타 채널 별도 항목 Chrome Web Store 자동배포 골격#113
Conversation
- manifest: isBeta 시 BETA_CLIENT_ID·icon-beta 아이콘으로 분기
- manifest: BETA_VERSION(4-파트 숫자)으로 store-valid 버전 주입
- release-beta.yml: manifest 버전을 X.Y.Z.RUN_NUMBER 로 계산해 빌드에 주입
- 베타 아이콘 자산 icon-beta-{16,32,48,128}.png 추가
Closes #112
📝 WalkthroughWalkthrough베타 릴리즈 워크플로에서 숫자 4-파트 형식의 Changes베타 CWS 자동배포 활성화
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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 `@manifest.config.ts`:
- Around line 6-18: The beta manifest path in createManifest currently uses
BETA_CLIENT_ID even when it is an empty string, which leaves oauth2.client_id
invalid for beta builds. Update createManifest to guard the isBeta branch so
beta builds fail fast or fall back only when a real beta client ID is present,
and keep the mock/production selection intact via mode, isBeta, BETA_CLIENT_ID,
and PROD_CLIENT_ID. Make the check explicit near the clientId assignment so any
RELEASE_CHANNEL=beta build cannot proceed with an empty OAuth client ID.
🪄 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: ec322d05-c1c3-449c-bd96-71e09c8cfbb9
⛔ Files ignored due to path filters (4)
public/images/icon/icon-beta-128.pngis excluded by!**/*.pngpublic/images/icon/icon-beta-16.pngis excluded by!**/*.pngpublic/images/icon/icon-beta-32.pngis excluded by!**/*.pngpublic/images/icon/icon-beta-48.pngis excluded by!**/*.png
📒 Files selected for processing (2)
.github/workflows/release-beta.ymlmanifest.config.ts
| // 베타는 별도 스토어 항목 = 별도 확장 ID로 게시되므로, 그 확장 ID에 묶인 | ||
| // 전용 OAuth client_id 가 필요하다. (스테이블용 PROD_CLIENT_ID 로는 베타에서 | ||
| // chrome.identity 토큰 검증이 실패한다.) | ||
| // TODO(#112): 베타 스토어 항목 생성 후 발급받은 client_id 로 교체. | ||
| const BETA_CLIENT_ID = ''; | ||
|
|
||
| export function createManifest(mode?: string): ManifestV3Export { | ||
| const clientId = mode === 'mock' ? DEV_CLIENT_ID : PROD_CLIENT_ID; | ||
|
|
||
| // 베타 채널 빌드 기반 (Chrome Web Store 2단계 게시 대비) | ||
| // 베타 채널 빌드 (Chrome Web Store 별도 항목 게시 대비) | ||
| // 릴리즈 워크플로의 베타 빌드에서 RELEASE_CHANNEL=beta 를 주입하면 | ||
| // 별도 스토어 항목/아이콘과 구분되도록 이름에 (Beta) 가 붙는다. | ||
| // 이름에 (Beta) 가 붙고, 별도 아이콘/OAuth client_id 로 분기된다. | ||
| const isBeta = process.env.RELEASE_CHANNEL === 'beta'; | ||
|
|
||
| const clientId = mode === 'mock' ? DEV_CLIENT_ID : isBeta ? BETA_CLIENT_ID : PROD_CLIENT_ID; |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
빈 BETA_CLIENT_ID 로 인해 모든 베타 빌드의 OAuth 가 동작하지 않습니다.
isBeta 인 빌드에서는 clientId 가 빈 문자열(BETA_CLIENT_ID = '')로 설정되어 oauth2.client_id 가 비게 됩니다(Line 18 → Line 56). 베타 빌드 스텝(RELEASE_CHANNEL=beta)은 ENABLE_STORE_PUBLISH 게이트와 무관하게 항상 실행되어 그 산출물이 프리릴리즈 zip 으로 첨부되므로, 베타 테스터가 받는 빌드는 chrome.identity 토큰 검증이 실패하거나 매니페스트 로드 자체가 거부될 수 있습니다.
#112 로 발급받은 실제 client_id 로 교체되기 전까지는 베타 산출물이 배포되지 않도록 하거나, 빈 값일 때 빌드를 명시적으로 실패시키는 가드를 두는 것을 권장합니다.
BETA_CLIENT_ID 가 비어 있을 때 베타 빌드를 조기에 실패시키는 가드를 추가하는 변경을 원하시면 도와드리거나, #112 추적을 위한 이슈 정리를 도와드릴까요?
🤖 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 `@manifest.config.ts` around lines 6 - 18, The beta manifest path in
createManifest currently uses BETA_CLIENT_ID even when it is an empty string,
which leaves oauth2.client_id invalid for beta builds. Update createManifest to
guard the isBeta branch so beta builds fail fast or fall back only when a real
beta client ID is present, and keep the mock/production selection intact via
mode, isBeta, BETA_CLIENT_ID, and PROD_CLIENT_ID. Make the check explicit near
the clientId assignment so any RELEASE_CHANNEL=beta build cannot proceed with an
empty OAuth client ID.
관련 이슈
Closes #112
변경 내용
베타-스테이블 병존을 위해 베타를 별도 스토어 항목으로 게시하는 전제에서, 게이트(
ENABLE_STORE_PUBLISH) 뒤 스텁이 실제로 동작하도록 코드 골격을 채웠다.isBeta일 때 OAuthclient_id를BETA_CLIENT_ID로 분기. 베타는 별도 확장 ID라 스테이블용PROD_CLIENT_ID로는chrome.identity토큰 검증이 실패하기 때문. (현재 placeholder''— 베타 스토어 항목 생성 후 발급받아 채움,TODO(#112))isBeta일 때 아이콘을icon-beta-*로 분기.version은 숫자 점 표기만 허용 → 베타 빌드는BETA_VERSION(4-파트 숫자)을 주입받아 store-valid 버전을 쓴다.X.Y.Z.RUN_NUMBER로 계산해 빌드에BETA_VERSION으로 주입. GitHub 태그는 기존vX.Y.Z-beta.NSemVer 표기 유지. 스토어 게시 스텝의 stale 주석 정정.icon-beta-{16,32,48,128}.png추가 (제공받은 16/32/64/128 중 48은 128에서 다운스케일 생성, 미사용 64 제외).변경 유형
feat)chore,ci)체크리스트
npm run lint와npm run build가 통과합니다.Summary by CodeRabbit
New Features
Bug Fixes