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/config@2.3.0/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": "yarn@3.3.1", "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