본문 바로가기
C.W.K.
Stream
Lesson 09 of 13 · published

버전 범프

~9 min · versioning, semver, automation

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

버전 관리를 워크플로로, 귀찮은 일 없애기

릴리스할 때마다 pyproject.toml / package.json / Cargo.toml의 버전 문자열을 손으로 고치는 건 까먹기 쉽고 에러도 잘 터져. 그러니까 자동화하자.

접근 방식

1) Conventional Commits + 자동 범프

  • 커밋이 feat: ..., fix: ..., feat!: ... 형식을 따르게 해.
  • release-please나 semantic-release 같은 도구가 커밋 기록을 읽고 patch, minor, major 중 어느 걸로 올릴지 정해.
  • 범프 PR이나 커밋으로 버전과 changelog를 업데이트하고 태그도 만들어.

2) 'kind' 입력값을 받는 수동 workflow_dispatch

  • kind: choice [patch, minor, major] 입력값과 함께 릴리스 워크플로를 실행해.
  • 워크플로가 npm version $kinduv version --bump $kind를 실행하고 커밋, 태그, 푸시까지 처리해.
  • Conventional Commits보다 번거로움이 적은 대신, 사람이 직접 판단할 부분이 더 많아.

3) Calendar versioning (CalVer)

  • 날짜 자체를 버전으로 써: 2026.04.30.
  • 범프할지 결정할 필요 없어. 새 날짜로 릴리스하면 자동으로 더 최신이 되니까.
  • Semver 스타일의 API 계약이 없는 제품엔 이게 최선이야.

Code

수동 workflow_dispatch 범프·yaml
name: bump
on:
  workflow_dispatch:
    inputs:
      kind:
        type: choice
        options: [patch, minor, major]
        default: patch
permissions:
  contents: write

jobs:
  bump:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0, token: ${{ secrets.GITHUB_TOKEN }} }
      - uses: actions/setup-node@v4
        with: { node-version: '22' }
      - name: Bump
        run: |
          git config user.email 'gha@bot'
          git config user.name 'gha bot'
          npm version ${{ inputs.kind }} -m 'chore(release): %s'
          git push --follow-tags

External links

Exercise

저장소 하나에 버전 범프 전략을 골라서 구현해 봐: release-please 설정, 수동 범프 워크플로 작성, 또는 명확한 CalVer 정책 문서화. 한 릴리스에 적용해 보고 번거로움이 얼마나 줄어드는지 관찰해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.