This document is intended for the maintainers.
GitHub Actions와 npm Trusted Publishing(OIDC)으로 배포합니다. 장기 npm 토큰은 사용하지 않습니다.
- GitHub의
Actions→Release→Run workflow로 이동합니다. - 실행 브랜치로
master를 선택합니다. version_type에서patch,minor,major중 하나를 선택합니다.- beta 버전을 배포하려면
beta를 선택한 뒤 워크플로를 실행합니다. - 생성된
release/v<version>PR에서Approve workflows to run을 선택합니다.Unit Test가 통과하면 PR을 병합합니다. - PR을 병합하면 Release 워크플로가 태그와 Draft GitHub Release를 만들고 패키지를 검증합니다.
- Draft GitHub Release에 작성된 릴리즈 노트를 검토하고 필요한 내용을 편집합니다.
- 문제가 없다면 Release 워크플로에서
npm-release배포를 승인합니다. - npm 배포가 끝나면 Draft GitHub Release에서
Publish release를 선택해 직접 공개합니다.
정식 버전은 npm의 latest dist-tag로 배포합니다. beta 버전은 beta dist-tag와 GitHub prerelease로 배포합니다.
선택한 버전이 현재 beta dist-tag보다 낮으면 워크플로가 배포를 중단합니다. beta dist-tag가 이전 버전으로 돌아가는 상황을 막기 위한 검사입니다.
현재 npm latest가 13.0.0일 때의 예시는 다음과 같습니다.
minor, beta 선택:13.1.0-beta.0- 다시
minor, beta 선택:13.1.0-beta.1 minor, beta 미선택:13.1.0patch, beta 미선택:13.0.1
- 릴리즈 PR을 만들다가 실패하면 Release 워크플로를 다시 실행합니다. 같은 버전의
release/v<version>브랜치나 열린 PR이 있으면 이를 재사용합니다.Unit Test가 실패했다면 해당 실행을 PR에서 다시 실행합니다. - PR을 병합한 뒤 npm 배포 전에 실패하면 해당 Release 워크플로를 다시 실행합니다. 기존 태그와 Draft GitHub Release가 현재 배포 커밋을 가리키는지 확인한 뒤 재사용합니다.
- npm 배포는 성공했지만 GitHub Release를 공개하지 않았다면 Draft의 내용을 확인한 뒤 직접 공개합니다.
- npm에서 버전을 삭제해도 같은 버전으로 다시 배포할 수 없습니다. 새 버전을 만들기 전에 npm과 GitHub의 현재 상태부터 확인합니다.
Release 워크플로는 npm에 바로 배포하지 않고 먼저 버전 변경 PR을 만듭니다. master 브랜치가 보호되어 있어 워크플로가 버전 커밋을 직접 푸시할 수 없기 때문입니다.
PR을 병합한 커밋을 기준으로 태그, npm 패키지, GitHub Release를 만들기 때문에 저장소에 기록된 버전과 실제 배포 결과도 일치합니다.