-
Notifications
You must be signed in to change notification settings - Fork 3
๐ฆ Changeset CI CD
changeset์ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ(monorepo)์์ ์ํธ ์์กดํ๋ ํจํค์ง๋ค์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฌ๋ฌ ์์กด๋ ํจํค์ง๋ค์ ์ ๋ฐ์ดํธํ ๋ ๋ง๋ค ์๋์ผ๋ก Semver๊ท์น์ ๋ฐ๋ผ ๋ฒ์ ์ ๊ด๋ฆฌํด์ฃผ๊ณ ๊ฐํธํ ๋ช ๋ น์ ์ ํตํด ์์ฝ๊ฒ ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฏธ ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ํ๋ก์ ํธ ํ๊ฒฝ์์ ์ ์ฉํ๊ธฐ ์ฝ๊ณ , CI/CD ์ง์์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ํฉํ Changeset์ ์ ํํ๊ฒ ๋์์ต๋๋ค.
.changeset/config.json์์ ํ๋ก์ ํธ ํ๊ฒฝ์ ๋ง๊ฒ ํ๊ฒฝ์ค์ ์ ๊ตฌ์ฑํ์์ต๋๋ค.
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}- access: ์ก์ธ์ค ๊ถํ ์ค์ (restricted, public)
- baseBranch: ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ์ํ ๋์ ๋ธ๋์น
-
updateInternalDependencies: ์ข
์๋ ํจํค์ง๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ฐ์ด ์
๋ฐ์ดํธ
patch -
commit:
false๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ง์ ์ปค๋ฐ
GitHub Actions๋ฅผ ํตํด main ๋ธ๋์น์ merge๊ฐ ๋ ๋ ๋ง๋ค ํ์ ํจํค์ง๋ค์ ๋น๋ํ์ฌ ๋ฐฐํฌํ๋ CI/CD๋ฅผ ๊ตฌ์ถํ์์ต๋๋ค. NPM ๋ ์ง์คํธ๋ฆฌ ๋ฐฐํฌ ๊ณผ์ ์ค์ workspace:range๋ฅผ ๋ณํํ์ง ๋ชปํ๋ ์ด์๊ฐ ์์ด yarn pack์ ํตํด ํจํค์ง ํ ๋ค์ ๋ณ๋์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋&์์ถํด์ ํ ๋ฐฐํฌํ๊ฒ๋ ํ์ฌ ์ด์๋ฅผ ํด๊ฒฐํ์์ต๋๋ค. ์ฐธ๊ณ
{
"name": "jdesignlab",
"version": "1.0.2",
"packageManager": "[email protected]",
"homepage": "https://github.com/DesignSystemLab/design-system",
"scripts": {
...
"allpackages": "yarn workspaces foreach --no-private --verbose",
"build": "yarn workspaces foreach run build",
"build:release": "yarn allpackages exec rm -rf _release && yarn allpackages pack && yarn allpackages exec \"mkdir _release && tar zxvf package.tgz --directory _release && rm package.tgz\"",
"version": "changeset version",
"release": "yarn build:release && changeset publish"
},
"workspaces": [
"packages/*"
],
"devDependencies": {...},
"dependencies": {...}
}