| name | release |
| description | Automates versioning and release notes generation for hwp2md. Use this skill when preparing a new release, creating version tags, or generating changelogs from git history. |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob |
| user-invocable | true |
Release Automation Skill
์ด ์คํฌ์ hwp2md์ ๋ฒ์ ๋๊ณผ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์๋ํํฉ๋๋ค.
์ฌ์ฉ๋ฒ
/release [version] [options]
์์:
/release - ๋ค์ ๋ฒ์ ์๋ ๊ฒฐ์ ๋ฐ ๋ฆด๋ฆฌ์ฆ ์ค๋น
/release v0.2.0 - ํน์ ๋ฒ์ ์ผ๋ก ๋ฆด๋ฆฌ์ฆ
/release patch - ํจ์น ๋ฒ์ ์ฆ๊ฐ (v0.1.0 โ v0.1.1)
/release minor - ๋ง์ด๋ ๋ฒ์ ์ฆ๊ฐ (v0.1.0 โ v0.2.0)
/release major - ๋ฉ์ด์ ๋ฒ์ ์ฆ๊ฐ (v0.1.0 โ v1.0.0)
๋ฆด๋ฆฌ์ฆ ํ๋ก์ธ์ค
1. ๋ฒ์ ๊ฒฐ์
ํ์ฌ ํ๊ทธ ํ์ธ:
git tag -l 'v*' --sort=-version:refname | head -5
๋ฒ์ ํ์: vMAJOR.MINOR.PATCH (Semantic Versioning)
๋ฒ์ ์ฆ๊ฐ ๊ธฐ์ค:
- MAJOR: ํ์ ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ
- MINOR: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ (ํ์ ํธํ)
- PATCH: ๋ฒ๊ทธ ์์ , ๋ฌธ์ ์์
2. ๋ณ๊ฒฝ์ฌํญ ๋ถ์
๋ง์ง๋ง ํ๊ทธ ์ดํ ์ปค๋ฐ ๋ถ์:
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
git log $LAST_TAG..HEAD --oneline
else
git log --oneline
fi
3. ๋ฆด๋ฆฌ์ฆ ํ๊ทธ ์์ฑ
git tag -a v0.2.0 -m "Release v0.2.0
์ฃผ์ ๋ณ๊ฒฝ์ฌํญ:
- ๊ธฐ๋ฅ 1
- ๊ธฐ๋ฅ 2
- ๋ฒ๊ทธ ์์
"
git push origin v0.2.0
4. GitHub Release
goreleaser๋ฅผ ์ฌ์ฉํ ๋ฆด๋ฆฌ์ฆ:
goreleaser release --snapshot --clean
goreleaser release --clean
๋ฆด๋ฆฌ์ฆ ์ฒดํฌ๋ฆฌ์คํธ
๋ฆด๋ฆฌ์ฆ ์ ํ์ธ์ฌํญ:
์์: ์ ์ฒด ๋ฆด๋ฆฌ์ฆ ์ํฌํ๋ก์ฐ
git status
make test
git describe --tags --abbrev=0
git log $(git describe --tags --abbrev=0)..HEAD --oneline
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main
git push origin v0.2.0
GitHub Actions ์๋ ๋ฆด๋ฆฌ์ฆ
ํ๊ทธ๋ฅผ ํธ์ํ๋ฉด GitHub Actions๊ฐ ์๋์ผ๋ก ๋ฆด๋ฆฌ์ฆ๋ฅผ ์์ฑํฉ๋๋ค.
์ํฌํ๋ก์ฐ (.github/workflows/release.yml)
v* ํ๊ทธ ํธ์ ์ ํธ๋ฆฌ๊ฑฐ
- goreleaser๊ฐ ์๋ ์คํ
- ํฌ๋ก์ค ํ๋ซํผ ๋ฐ์ด๋๋ฆฌ ๋น๋ (Linux, macOS, Windows)
- GitHub Release ํ์ด์ง์ ์๋ ๊ฒ์
- ๋ฆด๋ฆฌ์ฆ ๋
ธํธ ์๋ ์์ฑ (์ปค๋ฐ ๋ฉ์์ง ๊ธฐ๋ฐ)
๋ฆด๋ฆฌ์ฆ ๋
ธํธ ๊ตฌ์กฐ
goreleaser๊ฐ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ถ์ํ์ฌ ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ์ ๋ฆฌ:
- New Features: Add, Implement, Create, feat ์ ๋์ฌ
- Bug Fixes: Fix, Resolve, Correct ์ ๋์ฌ
- Improvements: Update, Change, Refactor, Improve ์ ๋์ฌ
- Documentation: docs ์ ๋์ฌ
๋ฆด๋ฆฌ์ฆ ์คํ ๋ฐฉ๋ฒ
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main
git push origin v0.2.0
๋ฆด๋ฆฌ์ฆ ํ์ด์ง ๋ด์ฉ
์๋ ์์ฑ๋๋ ๋ฆด๋ฆฌ์ฆ ํ์ด์ง:
- ์ค์น ๋ฐฉ๋ฒ (๋ฐ์ด๋๋ฆฌ ๋ค์ด๋ก๋, go install)
- ์ฃผ์ ๊ธฐ๋ฅ ์๊ฐ
- ๋ณ๊ฒฝ ๋ด์ญ (์ปค๋ฐ ๊ธฐ๋ฐ)
- ์ ์ฒด ๋ณ๊ฒฝ ๋ก๊ทธ ๋งํฌ
- ํ๋ซํผ๋ณ ๋ฐ์ด๋๋ฆฌ ๋ค์ด๋ก๋
๊ธด๊ธ ํจ์น ๋ฆด๋ฆฌ์ฆ
ํซํฝ์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ:
git checkout -b hotfix/v0.1.1 v0.1.0
git commit -m "Fix: Critical bug description"
git tag -a v0.1.1 -m "Hotfix release v0.1.1"
git checkout main
git merge hotfix/v0.1.1
git push origin main
git push origin v0.1.1