semantic-release란?

GIT 활용

목록 보기
2/3

semantic-release란?

semantic-release자동화된 버전 관리 및 배포 도구입니다.
Git 커밋 메시지를 분석하여 자동으로 버전(예: 1.0.0 → 1.1.0) 및 CHANGELOG를 생성하고 배포하는 역할을 합니다.


1. 주요 기능

버전 자동 증가 (major.minor.patch 관리)
CHANGELOG 자동 생성 (CHANGELOG.md 파일 업데이트)
NPM, GitHub, Docker 등에 자동 배포
Git 태그(Tag) 자동 생성 (v1.2.3 같은 태그 추가)


2. 동작 방식

(1) Conventional Commits 메시지 분석

semantic-release는 커밋 메시지를 분석하여 버전을 자동으로 결정합니다.
예를 들어, 다음 커밋들이 있다고 가정해봅시다.

feat: 로그인 기능 추가
fix: 로그인 시 비밀번호 오류 메시지 수정
feat: 사용자 프로필 수정 기능 추가
BREAKING CHANGE: API 응답 형식이 변경됨

(2) 자동으로 버전 증가 (Semantic Versioning)

커밋 타입의미버전 증가
fix:버그 수정patch (1.0.0 → 1.0.1)
feat:기능 추가minor (1.0.0 → 1.1.0)
BREAKING CHANGE:하위 호환 불가 변경major (1.0.0 → 2.0.0)

위 예시에서는 feat가 포함되었고, BREAKING CHANGE도 있으므로
자동으로 메이저 버전 증가 (1.x.x → 2.0.0) 가 적용됩니다.


3. 자동으로 CHANGELOG.md 생성

위의 커밋이 적용되면 semantic-release자동으로 CHANGELOG.md를 업데이트합니다.

📌 자동 생성된 CHANGELOG.md 예시

# Changelog

## [2.0.0] - 2025-02-02
### 🚀 기능 추가
- 로그인 기능 추가 (`feat: 로그인 기능 추가`)
- 사용자 프로필 수정 기능 추가 (`feat: 사용자 프로필 수정 기능 추가`)

### 🛠 버그 수정
- 로그인 시 비밀번호 오류 메시지 수정 (`fix: 로그인 시 비밀번호 오류 메시지 수정`)

### ⚠ BREAKING CHANGES
- API 응답 형식이 변경됨 (`BREAKING CHANGE: API 응답 형식 변경`)

4. 자동 배포 (예: NPM, GitHub Release, Docker Hub 등)

semantic-release는 GitHub, NPM, Docker 등의 배포도 자동화할 수 있습니다.

📌 예시

  • GitHub Release 자동 생성
    v2.0.0 태그를 만들고, CHANGELOG.md 내용을 포함한 릴리즈 생성
  • NPM 패키지 자동 배포
    npm publish 실행하여 새로운 버전 배포
  • Docker 이미지 자동 푸시
    docker push myapp:v2.0.0 실행

5. 설치 및 사용법

(1) 프로젝트에 semantic-release 설치

npm install -g semantic-release @semantic-release/changelog @semantic-release/git

(2) .releaserc.json 설정 파일 추가

📌 GitHub과 NPM에 자동 배포하는 예제

{
  "branches": ["main"],
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/changelog",
    "@semantic-release/npm",
    "@semantic-release/github",
    "@semantic-release/git"
  ]
}

(3) GitHub Actions 또는 CI/CD에서 실행

GitHub Actions 예시 (.github/workflows/release.yml)

name: Release

on:
  push:
    branches:
      - main

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install Dependencies
        run: npm install

      - name: Run semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: npx semantic-release

6. 마무리

semantic-release를 사용하면?

  1. 커밋 메시지만 잘 작성하면 버전이 자동으로 업데이트됨
  2. CHANGELOG.md가 자동으로 정리됨
  3. GitHub Release & NPM 배포가 자동화됨
  4. 버전 관리 실수를 줄이고, 협업이 편리해짐

🔥 Conventional Commits 규칙을 잘 지키면, semantic-release로 버전 관리와 배포를 완전히 자동화할 수 있습니다! 🚀

profile
AI 답변 글을 주로 올립니다.

0개의 댓글