semantic-release-test

semantic-release 적용하기

github action을 이용한 예제

토큰 발급

토큰 설정 이미지1 토큰 설정 이미지2 토큰 설정 이미지3

release.yml 작성

jobs: release: runs-on: ubuntu-latest steps: # 깃허브 저장소 체크아웃 (fetch-depth: 0은 전체 커밋 히스토리를 가져옴) - uses: actions/checkout@v3 with: fetch-depth: 0

  # JDK 17 설정 (Spring Boot 3.x 기준)
  - name: Set up JDK 17
    uses: actions/setup-java@v3
    with:
      java-version: '17'
      distribution: 'temurin'
      
  # semantic-release는 Node.js 기반이므로 Node.js 설치
  - name: Setup Node.js
    uses: actions/setup-node@v3
      
  # semantic-release 관련 npm 패키지 설치
  # @semantic-release/git: 깃 커밋/태그 자동화
  # @semantic-release/changelog: CHANGELOG.md 자동 생성
  - name: Install dependencies
    run: npm install -g semantic-release @semantic-release/git @semantic-release/changelog
    
  # Gradle 캐시 설정으로 빌드 속도 향상
  - name: Cache Gradle packages
    uses: actions/cache@v3
    with:
      path: ~/.gradle/caches
      key: $-gradle-$
      
  - name: Run semantic-release
    env:
      GH_TOKEN: $
    run: npx semantic-release

## .releaserc.json 작성

semantic-release 설정을 담당하는데 아래와 같은 요소들을 설정해줄 수 있다.

- Git 저장소(URL, 배포할 브랜치, 태그 포맷)
- 사용할 플러그인 및 옵션 설정
- 실행 모드(디버그, dry run, local)

아래 예시를 실제 사용할 때는 주석을 삭제한다.
```json
{
  // main 브랜치에서만 릴리즈 수행
  "branches": ["main"],

  // 사용할 플러그인 설정
  "plugins": [
    // 커밋 메시지 분석하여 버전 결정
    "@semantic-release/commit-analyzer",

    // 릴리즈 노트 생성
    "@semantic-release/release-notes-generator",

    // CHANGELOG.md 파일 생성/업데이트
    "@semantic-release/changelog",

    // 변경된 파일 자동 커밋
    "@semantic-release/git",

    // GitHub 릴리즈 생성 및 자산 업로드
    [
      "@semantic-release/github",
      {
        "assets": [
          {
            // 빌드된 JAR 파일을 릴리즈에 첨부
            "path": "build/libs/*.jar",
            "label": "Spring Boot JAR"
          }
        ]
      }
    ]
  ]
}

플러그인들의 역할

commit-analyzer

release-notes-generator

changelog

git

github

참고자료

공식

블로그