Skip to content

๐Ÿฆ‹ Changeset CI CD

SeungJin Choi edited this page Jun 14, 2023 · 3 revisions

๐Ÿฆ‹ Changeset

changeset์€ ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ(monorepo)์—์„œ ์ƒํ˜ธ ์˜์กดํ•˜๋Š” ํŒจํ‚ค์ง€๋“ค์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์˜์กด๋œ ํŒจํ‚ค์ง€๋“ค์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋งˆ๋‹ค ์ž๋™์œผ๋กœ Semver๊ทœ์น™์— ๋”ฐ๋ผ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•ด์ฃผ๊ณ  ๊ฐ„ํŽธํ•œ ๋ช…๋ น์…‹์„ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ ์ ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ , CI/CD ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ํ•ฉํ•œ Changeset์„ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Changeset Configure

.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๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ปค๋ฐ‹

CI/CD

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": {...}
}
Clone this wiki locally