본문 바로가기

Diary/TIL

2024-04-09) release 와 dev 분리

1. release와 dev를 분리해야 하는 이유

  • 안정성 유지: release 브랜치는 배포된 안정적인 코드를 포함한다. 이를 통해 배포 시 문제가 발생할 가능성을 줄인다.
  • 병렬 개발: dev 브랜치는 새로운 기능 개발, 버그 수정 등의 작업이 이루어진다. 이를 통해 개발 작업과 배포 작업이 충돌하지 않도록 한다.
  • 코드 관리: 분리된 브랜치를 통해 코드 베이스를 체계적으로 관리하고, 여러 개발자들이 동시에 작업할 수 있다.

2. release와 dev를 분리하는 방법

1. 브랜치 생성:

git checkout -b dev
git push origin dev
git checkout -b release
git push origin release

2. 개발 브랜치(dev)에서 작업:

- 새로운 기능이나 버그 수정을 dev 브랜치에서 한다.

- 작업 완료 후 dev 브랜치를 release 브랜치에 병합한다.

3. release를 버전별로 Git에 게시하는 방법

1. 태그 생성 및 푸시:

릴리즈할 준비가 되면 release 브랜치에서 태그를 생성한다.

git checkout release
git tag -a v0.0.01 -m "Release version 0.0.01"
git push origin v0.0.01

2. 버전 번호 관리:

각 릴리즈마다 버전 번호를 업데이트하고 태그를 생성하여 푸시한다.

git tag -a v0.0.01 -m "Release version 0.0.01"
git push origin v0.0.01

 

이렇게 해주면

 

다음과 같이 버전별로 게시가 가능해진다.

 

혹은 아래와 같이 github action을 사용, 자동 tagging이 가능하다.

name: Create Release Branch And Tag

on:
  push:
    branches:
      - main # main branch로 push될 때 아래 action이 실행됩니다.

jobs:
  build:

    runs-on: ubuntu-latest

    steps:

      # 깃헙 코드 내려받기
      - uses: actions/checkout@v2

      # 태그 생성
      - name: Bump version and push tag
        id: tag_version
        uses: mathieudutour/github-tag-action@v5.5  # 가져다 쓸 auto tagging 프로그램
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }} # secrets.GITHUB_TOKEN 는 자동생성됨

      # 릴리즈 생성
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1             # 가져다 쓸 create release 프로그램
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # secrets.GITHUB_TOKEN 는 자동생성됨
        with:
          tag_name: ${{ steps.tag_version.outputs.new_tag }}
          release_name: Release ${{ steps.tag_version.outputs.new_tag }}
          body: ${{ steps.tag_version.outputs.changelog }}