남들 몰래 포트폴리오를 만들면서, 저는 한 번 release note
를 활용해볼까 하는 기대가 있었어요.
왜냐하면, 본질적으로 어떻게 배포되었는지를 설명해주는 건 유저의 입장에서 달라진 점을 이해하기 편하기 때문이죠.
하지만 여간 귀찮습니다.
적어도, 계속해서 일일이 똑같은 컨벤션을 유지하며 글을 작성한다는 것은, 반복된 일을 싫어하는 개발자들에겐 분명 힘든 고통이 생기기 때문이죠. 😭
그래서 저는 릴리즈 노트를 배포하기 전, 양식을 자동화를 하기 위한 방법을 찾았어요.
어떻게 릴리즈 노트를 자동화할 수 있었는지 한 번, 살펴보죠!
릴리즈 노트에 관한 워크플로우를 간단히 설정할 수 있는 Release Drafter GitHub Action
라는 것이 있었어요.
이 친구는 PR
을 기반으로 라벨링된 것을 판별해서, 버전을 자동 업데이트해주는데요.
저는 원래 PR
을 기반으로 프로젝트를 진행하기 때문에 저에게 너무 안성맞춤이라 사용했어요.
따라서 여기서 주요 설정들을 확인해보며, yml
파일을 작성했습니다.
name: Release Drafter
on:
push:
branches:
- main
jobs:
update_release_draft:
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@v5
with:
config-name: release-drafter-config.yml
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
그런데 이게 끝이 아니에요. 이 친구가 어떤 컨벤션을 만들었는지 참고하는 yml
파일이 또 존재해야 합니다. 그 친구가 with -> config-name
에 존재하는 release-drafter-config.yml
파일이에요.
name-template: '🚀 v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
categories:
- title: '💡 Features'
labels:
- '🌈 Feature'
- title: '🐛 Bug fixes'
labels:
- '⚠️ Bug'
- title: '🤯 Inner Changes'
labels:
- '📦 Chore'
- '📃 Docs'
change-template: '- $TITLE #$NUMBER @$AUTHOR '
change-title-escapes: '\<*_&'
version-resolver:
major:
labels:
- 'major'
minor:
labels:
- 'minor'
patch:
labels:
- 'patch'
default: patch
template: |
## 🚀 이번 버전에서는 어떤 게 바뀌었을까요?
---
$CHANGES
no-changes-template: '앗! 변경사항이 없어요. 😖'
여기서 저는 다음과 같은 컨벤션을 세웠어요.
🌈 Feature
이라는 라벨이 붙으면 💡 Features
라는 카테고리 하위로 PR을 정의한다.⚠️ Bug
라는 라벨이 붙으면 🐛 Bug fixes
라는 카테고리 하위로 PR을 정의한다.📦 Chore
나 📃 Docs
인 라벨은 🤯 Inner Changes
카테고리 하위로 PR을 정의한다.그럼 버저닝도 해야되겠죠? 실제로 이 친구는 버저닝도 자동화해줍니다.
위의 라벨들로 자동으로 버저닝할 수도 있지만, 저는 직접 제가 판단해서 버저닝하고 싶었어요.
따라서 다음과 같이 라벨로 배포 분류를 만든 다음, develop
-> main
으로 PR할 때 라벨로 버저닝하는 방식을 채택했습니다. 이는 위의 version-resolver
을 통해 가능해요.
major
라벨이 붙은 다음, main에 푸시하면 메이저 버전이 올라가요.minor
라벨이 붙은 다음, main에 푸시하면 마이너 버전이 올라가요.patch
라벨이 붙은 다음, main에 푸시하면 패치 버전이 올라가요.어때요. 간단하죠?
template
에서 관리가 가능해요.
template: |
## 🚀 이번 버전에서는 어떤 게 바뀌었을까요?
---
$CHANGES
이때, 만약 변경사항이 없을 수도 있죠! 그러면 디폴트를 만들어줄 수도 있어요.
no-changes-template: '앗! 변경사항이 없어요. 😖'
요론 식으로 배포 후 설정할 버전을 고려하여 라벨링을 해줘요.
저는 피쳐 단위로 작업한 게 많아서, 마이너 버전을 올렸어요.
다음과 같이 초안이 일정한 컨벤션을 바탕으로 나와요.
이를 수정하여 다시 상세사항을 작성하고, 퍼블리시하면 됩니다. 🥰
그렇지만 갑자기 말씀드리지만... 저는 이제 이 방법을 사용하지 않습니다!
이유는, 정말 몰래 포트폴리오 사이트를 만들고 있었는데요.
릴리즈 노트를 배포하는 순간, 모든 팔로잉한 사람들에게 알림이 갑니다 😭
덕분에 강제 공개(?)를 당한 것을 알게된 지금, CHANGELOG.md
로 갈아탔습니다.
아~무도 모르게 은밀한 작업을 하시는 분이 계시나요?
그렇다면 릴리즈 노트보다는, 체인지 로그와 자동 버저닝에 대한 다른 방법을 고려하시는 게 더 나은 선택일 수도 있겠네요. 😖
하지만, 나중에 실제 앱을 운영한다면 이 방법은 분명 강력하다고 말씀드리고 싶군요!
그리고 이 자동화 과정은 분명 편리하고 재밌었어요.
누군가에겐 도움이 되길 바라며. 이상! 🌈