Skip to content

[Task] 베타 채널 Chrome Web Store 자동배포 활성화 (별도 항목) #112

Description

@6-keem

확인 사항

  • 동일하거나 유사한 작업이 없는지 검색했습니다.

배경 / 목적

오픈소스화 마무리 단계로, 릴리즈 → Chrome Web Store 자동 게시 파이프라인을 실제로 동작시키려 한다.

현재 상태:

  • release-please.yml(stable) / release-beta.yml(beta) 두 워크플로 모두 mnao305/chrome-extension-upload 스텝이 vars.ENABLE_STORE_PUBLISH == 'true' 게이트 뒤에 스텁으로 들어가 있다.
  • manifest.config.tsRELEASE_CHANNEL=beta일 때 확장 이름에 (Beta) 접미사만 붙인다 (아이콘 분기 없음).
  • 베타 빌드의 manifest versionpackage.json 버전(스테이블 base)과 동일하게 나간다.

게이트를 그냥 켜면 베타 스토어 발행이 깨진다. 두 가지 코드 결함 때문:

  1. Chrome manifest version은 숫자 점 표기만 허용 → 태그의 -beta.N이 들어갈 수 없고, 현재는 manifest 버전이 스테이블과 동일해 스토어가 업로드를 거부한다.
  2. 베타는 별도 스토어 항목 = 별도 확장 ID로 운영하므로, 기존 PROD_CLIENT_ID(스테이블 확장 ID에 묶임)로는 베타에서 Calendar OAuth 토큰 검증이 실패한다. 베타용 client_id가 별도로 필요하다.

설계 결정: 베타-스테이블 병존이 목표이므로 단일 항목 + Trusted Testers(순차 출시만 가능)가 아닌 별도 스토어 항목 방식으로 간다.

OAuth 구분 정리:

  • 확장 Calendar OAuth(manifest.oauth2.client_id): 베타 확장 ID가 다르므로 베타용 별도 client_id 필요.
  • 스토어 게시 OAuth(CHROME_CLIENT_ID/SECRET/REFRESH_TOKEN): 개발자 계정 단위 → 스테이블·베타 공용 1개로 충분.

할 일

코드:

  • manifest.config.ts: BETA_CLIENT_ID 상수 추가, isBeta일 때 선택
  • manifest.config.ts: isBeta일 때 베타 아이콘 경로로 분기
  • 베타 아이콘 자산 추가 (icon-*-beta.png) — 자산은 메인테이너가 제공
  • release-beta.yml: RELEASE_CHANNEL=beta 빌드 시 manifest version을 4-파트 숫자 스킴(X.Y.Z.<RUN_NUMBER>)으로 주입 (GitHub 태그는 vX.Y.Z-beta.N 유지)

수동 운영(코드 외, 메인테이너):

  • 베타용 별도 스토어 항목 생성 → BETA_EXTENSION_ID 확보
  • 베타 확장 ID로 Calendar OAuth client_id 발급 → manifest BETA_CLIENT_ID에 반영
  • Web Store API 게시 자격증명 발급: CHROME_CLIENT_ID / CHROME_CLIENT_SECRET / CHROME_REFRESH_TOKEN (공용)
  • GitHub Secrets 등록(STABLE_EXTENSION_ID, BETA_EXTENSION_ID, 위 3종) + vars.ENABLE_STORE_PUBLISH=true 설정

완료 기준

  • ENABLE_STORE_PUBLISH=true 상태에서 Release PR 머지 시 스테이블 항목이 자동 게시된다.
  • Release Beta 워크플로 수동 실행 시 베타 별도 항목에 4-파트 숫자 버전으로 자동 게시되고, 스토어가 버전 충돌로 거부하지 않는다.
  • 베타 빌드는 이름 (Beta) + 베타 아이콘으로 스테이블과 시각적으로 구분된다.
  • 베타에서 Google Calendar 연동(OAuth)이 정상 동작한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    chore빌드/도구/설정 등 잡일

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions