์ด ํ๋ก์ ํธ๋ Changesets๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ธ๋ ํฌ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์๋ํํฉ๋๋ค.
# develop ๋ธ๋์น์์ ์์
git checkout develop
git pull origin develop
# ์ ๊ธฐ๋ฅ ๋ธ๋์น ์์ฑ
git checkout -b feature/์๋ก์ด-๊ธฐ๋ฅ/#์ด์๋ฒํธ์ฝ๋๋ฅผ ์์ ํ ํ:
# ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ
git add .
git commit -m "feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ"
# develop์ push
git push origin feature/์๋ก์ด-๊ธฐ๋ฅ/#์ด์๋ฒํธdevelop์ PR์ ์ฌ๋ฆด ๋๋ changeset์ด ํ์ํ์ง ์์ต๋๋ค!
# GitHub์์ feature/์๋ก์ด-๊ธฐ๋ฅ โ develop์ผ๋ก PR ์์ฑ
# ํ์๋ค์ด ๋ฆฌ๋ทฐ ํ develop์ ๋จธ์งdevelop์์ main์ผ๋ก PR์ ์์ฑํ ๋๋ง changeset์ด ํ์ํฉ๋๋ค:
# develop์์ main์ผ๋ก PR ์์ฑ ์ ์ changeset ์์ฑ
pnpm changeset-
ํจํค์ง ์ ํ: ์คํ์ด์ค๋ฐ๋ก ๋ณ๊ฒฝ๋ ํจํค์ง ์ ํ
๐ฆ Which packages would you like to include? โฏ @bofit/client โฏ @bds/ui -
๋ฒ์ ํ์ ์ ํ:
major: ํ์ ํธํ์ฑ ๊นจ์ง (breaking changes)minor: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ (ํ์ ํธํ)patch: ๋ฒ๊ทธ ์์ , ๋ฌธ์ ์ ๋ฐ์ดํธ
-
๋ณ๊ฒฝ์ฌํญ ์ค๋ช ์์ฑ:
๐ฆ Please enter a summary for this change: ์๋ก์ด ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฐ UI ๊ฐ์
# changeset ์์ฑ ํ develop์์ main์ผ๋ก PR ์์ฑ
# GitHub Actions์์ changeset ๊ฒ์ฆ
# PR ๋ฆฌ๋ทฐ ํ main์ ๋จธ์ง
# ์๋์ผ๋ก ๋ฒ์ ์
๋ฐ์ดํธ ๋ฐ ๋ฐฐํฌ| ํจํค์ง | ์ค๋ช | ๋ฒ์ ๊ท์น |
|---|---|---|
@bofit/client |
ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ | ๊ธฐ๋ฅ ์ถ๊ฐ ์ minor, breaking change ์ major |
@bds/ui |
๋์์ธ ์์คํ | ์ปดํฌ๋ํธ ์ถ๊ฐ ์ minor, API ๋ณ๊ฒฝ ์ major |
- ๋ฒ๊ทธ ์์
- ๋ฌธ์ ์ ๋ฐ์ดํธ
- ํ์ ์ ์ ์์
- ์ฑ๋ฅ ๊ฐ์
- ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- ์๋ก์ด ์ปดํฌ๋ํธ ์ถ๊ฐ
- ์๋ก์ด API ์๋ํฌ์ธํธ ์ถ๊ฐ
- ํ์ ํธํ๋๋ ๋ณ๊ฒฝ์ฌํญ
- Breaking changes
- API ๋ณ๊ฒฝ
- ์ปดํฌ๋ํธ props ๋ณ๊ฒฝ
- ํ์ ํธํ์ฑ ๊นจ์ง
# Changeset ์์ฑ (main PR ์์ฑ ์์๋ง)
pnpm changeset
# Changeset ์ํ ํ์ธ
pnpm changeset status
# ๋ฒ์ ์
๋ฐ์ดํธ (๋ก์ปฌ์์๋ง)
pnpm version
# ๋ฆด๋ฆฌ์ค (๋น๋ + ๋ฐฐํฌ)
pnpm release
# Changeset ํ์ผ๋ค ํ์ธ
ls .changeset/*.md- ์ฝ๋ ๋ฆฌ๋ทฐ ์๋ฃ
- ํ ์คํธ ํต๊ณผ
- develop์ ๋จธ์ง
- Changeset ์์ฑ ์๋ฃ (
pnpm changeset) - Changeset ํ์ผ์ด
.changeset/ํด๋์ ์กด์ฌ - ๋ณ๊ฒฝ์ฌํญ ์ค๋ช ์ด ๋ช ํํ๊ฒ ์์ฑ๋จ
- ์ ์ ํ ๋ฒ์ ํ์ ์ ํ (major/minor/patch)
- ์ฝ๋ ๋ฆฌ๋ทฐ ์๋ฃ
- ํ ์คํธ ํต๊ณผ
- GitHub Actions์์ changeset ๊ฒ์ฆ ํ์ธ
-
develop PR์์ changeset ๊ฒ์ฆ ์คํจ
โ Error: No changesets found! Please create a changeset using 'pnpm changeset'โ develop PR์์๋ changeset์ด ํ์ํ์ง ์์ต๋๋ค!
-
main PR์์ changeset ์์ด ์์ฑ
โ Error: No changesets found! Please create a changeset using 'pnpm changeset'โ main PR์์๋ changeset์ด ํ์์ ๋๋ค!
-
๋ถ์ ์ ํ ๋ฒ์ ํ์
# ๋ฒ๊ทธ ์์ ์ธ๋ฐ major๋ก ์ค์ --- ## '@bofit/client': major ๋ฒ๊ทธ ์์
-
์ ์ ํ ๋ฒ์ ํ์
--- '@bofit/client': minor '@bds/ui': patch --- ๋ฒํผ ์ปดํฌ๋ํธ ๋ฒ๊ทธ ์์
-
๋ช ํํ ์ค๋ช
--- '@bofit/client': patch --- ๋ก๊ทธ์ธ ํ์ด์ง์์ ๋ฐ์ํ๋ 500 ์๋ฌ ์์
# 1. ๊ฐ๋ฐ
git checkout -b feature/new-login
# ... ์ฝ๋ ์์ฑ ...
# 2. develop์ PR ์์ฑ (changeset ๋ถํ์)
git add .
git commit -m "feat: ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ"
git push origin feature/new-login
# GitHub์์ feature/new-login โ develop์ผ๋ก PR ์์ฑ
# 3. develop์ ๋จธ์ง ํ, main์ผ๋ก PR ์์ฑ ์ changeset ์์ฑ
pnpm changeset
# @bofit/client ์ ํ, minor ์ ํ
# "์๋ก์ด ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ" ์
๋ ฅ
# 4. main์ผ๋ก PR ์์ฑ
# GitHub์์ develop โ main์ผ๋ก PR ์์ฑ# 1. ๊ฐ๋ฐ
git checkout -b fix/login-error
# ... ๋ฒ๊ทธ ์์ ...
# 2. develop์ PR ์์ฑ (changeset ๋ถํ์)
git add .
git commit -m "fix: ๋ก๊ทธ์ธ 500 ์๋ฌ ์์ "
git push origin fix/login-error
# GitHub์์ fix/login-error โ develop์ผ๋ก PR ์์ฑ
# 3. develop์ ๋จธ์ง ํ, main์ผ๋ก PR ์์ฑ ์ changeset ์์ฑ
pnpm changeset
# @bofit/client ์ ํ, patch ์ ํ
# "๋ก๊ทธ์ธ ์ ๋ฐ์ํ๋ 500 ์๋ฌ ์์ " ์
๋ ฅ
# 4. main์ผ๋ก PR ์์ฑ
# GitHub์์ develop โ main์ผ๋ก PR ์์ฑ# ํจํค์ง๊ฐ ์ ํ๋์ง ์์
๐ฆ Which packages would you like to include? ยท No items were selected
๐ฆ error You must select at least one package to release
# ํด๊ฒฐ: ์คํ์ด์ค๋ฐ๋ก ํจํค์ง ์ ํ ํ ์ํฐ# ์ค์๋ก ์๋ชป๋ changeset ์์ฑ ์
rm .changeset/ํ์ผ๋ช
.md# ํ์ฌ changeset ์ํ ํ์ธ
pnpm changeset status- Changesets ๊ณต์ ๋ฌธ์: https://github.com/changesets/changesets
- GitHub Actions ๋ก๊ทธ: PR์ Actions ํญ์์ ํ์ธ
- ํ ๋ฆฌ๋์๊ฒ ๋ฌธ์: ๋ณต์กํ ๋ฒ์ ๊ด๋ฆฌ ์ํฉ
- develop PR: changeset ๋ถํ์
- main PR: changeset ํ์
- ์ ์ ํ ๋ฒ์ ํ์ ์ ํ
- ๋ช ํํ ๋ณ๊ฒฝ์ฌํญ ์ค๋ช
- PR์์ GitHub Actions ํ์ธ
๐ก ํ: develop์์ ์์ ๋กญ๊ฒ ๊ฐ๋ฐํ๊ณ , main ๋ฐฐํฌ ์์๋ง ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ฉด ๋ฉ๋๋ค!