태그 기반 릴리스 파이프라인
표준 릴리스 흐름을 살펴보자. v1.4.2 같은 태그를 푸시하면 워크플로가 실행되고, 릴리스 아티팩트를 빌드한 뒤 GitHub Releases, npm, PyPI, ghcr에 게시하고 변경 이력도 함께 올린다.
구성요소
- 태그 — 로컬에서
git tag v1.4.2 && git push --tags를 실행하거나 GitHub UI에서 만든다. - 릴리스 워크플로 —
on: push: tags: ['v*.*.*']조건을 감지한다. - 빌드 — 릴리스 아티팩트를 만들어낸다.
- 변경 이력 — release-please, changesets, conventional-changelog로 자동 생성하거나 직접 작성한다.
- GitHub Release —
softprops/action-gh-release액션이나gh release createCLI로 생성한다. - 배포 게시 — 같은 워크플로에서 npm, PyPI, ghcr.io 등으로 배포한다.
자동화 수준
상황에 맞춰 자동화 범위를 선택해 봐:
- 수동 태그 — 직접
git tag를 입력한다. 가장 단순한 방식이다. - release-please(Google) — '릴리스' 커밋을 자동으로 PR로 올려주고, PR 병합 시 태그를 생성한다.
- changesets(npm 중심) — 기여자가 changeset 파일을 작성하면 CI가 모아서 태그를 단다.
- semantic-release — 컨벤셔널 커밋 기반으로 완전 자동화한다.