k-skill/docs/releasing.md
Jeffrey (Dongkyu) Kim da8eca15c2 Align Changesets release flow with generated package changelogs
The release workflow uses changesets/action to build the Version Packages PR, and that action reads each changed package's CHANGELOG.md after running changeset version. The repo had changelog generation disabled, so versioning succeeded but the action crashed with ENOENT when it tried to read missing package changelogs.

This enables the default Changesets changelog generator so release PRs can be assembled without manual stub files, while keeping GitHub Releases disabled for npm publishes. The release docs now match that behavior.

Constraint: Keep createGithubReleases false because npm package GitHub releases are still out of scope
Rejected: Add empty CHANGELOG.md files to each package | quick hotfix but leaves PR notes weak and requires manual upkeep for new packages
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: If changelog generation is disabled again, replace changesets/action PR generation or restore package changelog files before merging
Tested: npm run version-packages in local verification after enabling changelog generation
Tested: npm run ci
Not-tested: Live GitHub Actions release run on main after merge
2026-03-30 22:27:07 +09:00

2.3 KiB

릴리스와 자동 배포

이 저장소는 npm은 Changesets, Python은 release-please로 관리한다.

Node / npm 패키지

  • 위치: packages/*
  • 버전 관리: Changesets
  • 배포 workflow 파일: .github/workflows/release-npm.yml
  • 실제 publish 시점: Version Packages PR을 merge한 뒤 main에 push가 발생했을 때
  • 인증 방식: GitHub Actions가 repository secret NPM_TOKEN 으로 npm publish
  • 기본 규칙: 패키지 버전을 직접 손으로 올리지 말고 .changeset/*.md 파일을 추가한다.

흐름

  1. 기능 PR에서 .changeset/*.md 추가
  2. PR merge
  3. Changesets가 Version Packages PR 생성
  4. Version Packages PR merge
  5. GitHub Actions가 변경된 npm 패키지만 NPM_TOKEN 으로 publish
  6. 패키지별 CHANGELOG.md 는 Changesets가 자동 관리하고, npm 패키지용 GitHub Release 는 계속 만들지 않는다 (createGithubReleases: false 유지)

Python 패키지

  • 위치: python-packages/*
  • 버전 관리: release-please
  • 배포 workflow 파일: .github/workflows/release-python.yml
  • 실제 publish 시점: release-please가 release_created=true를 만든 run
  • 현재 상태: 실제 Python 패키지가 없어 scaffold only

npm token 운영 원칙

  • npm publish 는 repository secret NPM_TOKEN 을 사용한다.
  • NPM_TOKENgranular access token 으로 만들고, 가능하면 Packages and scopes 를 All Packages + Read and write 로 설정해 앞으로 추가될 npm 패키지까지 같은 CI 토큰으로 publish 가능하게 한다.
  • 계정에 2FA를 쓰는 경우, CI publish 를 위해 token 생성 시 npm publish 허용 설정을 함께 확인한다.
  • 새 패키지를 자동 publish 하려면 token 소유 계정이 그 패키지명을 첫 publish 할 수 있어야 하고, 이후에도 해당 패키지의 maintainer 권한을 유지해야 한다.
  • id-token: writeNPM_CONFIG_PROVENANCE=true 는 유지해서 token publish 에서도 provenance 생성을 시도한다.
  • PyPI 쪽은 계속 trusted publishing 우선이며 workflow filename 은 release-python.yml 이다.

Maintainer 확인 명령

npm install
npm run ci

GitHub repository secret

GitHub repository settings 에 아래 secret 을 저장해야 한다.

  • NPM_TOKEN: npm granular access token with publish/write permission for this repo's public packages