DOM (Feat. REACT)
์ฝ๋ ํตํฉ๊ณผ ์๋ ๋ฐฐํฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์๋ํํ๋ ๊ธฐ์ ์ ํ์ดํ๋ผ์ธ
์: GitHub์ ์ฝ๋ Push โ ํ ์คํธ ์๋ ์คํ โ ๋ฌธ์ ์์ผ๋ฉด main ๋ธ๋์น์ ๋ณํฉ
์: CI๋ก ๋น๋ ์ฑ๊ณต โ AWS๋ Vercel์ ์๋์ผ๋ก ๋ฐฐํฌ๋จ
์ฅ์ :
name: CI Test
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Dependencies
run: npm install
- name: Run Tests
run: npm test
์ด๊ฑฐ ์ปค๋ฐํ๊ฑฐ๋ pushํ๋ฉด ์๋์ผ๋ก ์คํ๋ผ.
CD(๋ฐฐํฌ)๋ ๋น์ทํ๊ฒ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ง ์ถ๊ฐํ๋ฉด ๋ผ.
์ค์ผ์ด, Vercel๋ก ํ๋ก ํธ๋ง ๋ฐฐํฌํ ๊ฑฐ๋ฉด GitHub Actions๋ฅผ ์ธ ํ์๊ฐ ๊ฑฐ์ ์์ด.
์๋๋ฉด Vercel์ GitHub์ ํธ์๋ง ํด๋ ์๋์ผ๋ก CI/CD ๋๊ฑฐ๋ . ์์ฃผ ํธํ๋ ํธํ ์์คํ ์ด์ผ.
โธป
โ Vercel ์๋ ๋ฐฐํฌ ํ๋ฆ (ํ๋ก ํธ์๋ ๊ธฐ์ค)
Vercel์ GitHub ์ฐ๋
ํน์ ๋ธ๋์น(ex. main)์ ํธ์ โ ์๋์ผ๋ก ๋น๋ & ๋ฐฐํฌ
.env ์ค์ ๋ Vercel ์น UI์์ ๊ฐ๋ฅ
โธป
๐ ํ์ง๋ง GitHub Actions๋ ์จ์ผ ํ๋ ๊ฒฝ์ฐ
โข ํ ์คํธ ์๋ํ (CI): npm test, eslint, prettier ๊ฐ์ ๊ฑฐ ๋จผ์ ์คํํ๊ณ ํธ์ํ ์ง ํ๋จํ๊ณ ์ถ์ ๋
โข ๋น๋ ์ต์ ํ ์ฒดํฌ
โข ๋ค์ํ ๋ธ๋์น์ ๋ฐ๋ฅธ ์กฐ๊ฑด๋ถ ๋ฐฐํฌ
โข Storybook ๋ฐฐํฌ (GitHub Pages) ๊ฐ์ ๋ณ๋ ์ ์ ๋ฆฌ์์ค ๊ด๋ฆฌ
โธป
๊ทธ๋ผ ๋ํํ ํ์ํ ์ ๋ต ์์ฝ:
โข ์ฐ์ ์ GitHub โ Vercel ์๋ํ๋ก ์ถฉ๋ถ
โข ์ดํ CI ๊ฒ์ฆ, Storybook ๋ฐฐํฌ ๋ฑ ์ถ๊ฐํ๊ณ ์ถ์ ๋ GitHub Actions ๋์
๐ง ๋ค์์ผ๋ก ํ๋ฉด ์ข์ ๊ฑฐ:
โข Vercel Dashboard โ Project โ Settings โ Environment Variables
โข API ํค๋ ๋น๋ฐ๊ฐ์ ์ฌ๊ธฐ์
โข ๋ฌด๋ฃ ์๋ธ๋๋ฉ์ธ: your-project.vercel.app
โข ๊ฐ์ธ ๋๋ฉ์ธ ์ฐ๊ฒฐ ๊ฐ๋ฅ (Vercel์์ DNS ์ค์ ์ง์)
โข ๋ณดํต main ๋ธ๋์น ๊ธฐ์ค ์๋ ๋ฐฐํฌ
โข dev ๋ธ๋์น ๋ฐ๋ก ๋๊ณ ํ๋ฆฌ๋ทฐ๋ก ๋ฐฐํฌํ ์๋ ์์ด
โธป
๐ค GitHub Actions ์ธ์ ์ฐ๋ฉด ์ข๋?
๋๊ฐ ๋ค์ ์ค ํ๋๋ผ๋ ํ ์๊ฐ์ด๋ฉด ์จ๋ด:
โข main ํธ์ ์ ์ ํ ์คํธ ํต๊ณผ ํ์ ์กฐ๊ฑด ๊ฑธ๊ณ ์ถ๋ค
โข Storybook์ GitHub Pages๋ ๋ค๋ฅธ ์ ์ ํธ์คํ ์ ์๋ ๋ฐฐํฌํ๊ณ ์ถ๋ค
โข SSR, ๋ฐฑ์๋ ๊ฐ์ด ๋ฌถ์ ํ๋ก์ ํธ๋ผ Vercel ๋ง๊ณ Cloudflare๋ AWS์ ๋ฐฐํฌํ ์์ ์ด๋ค
โธป
ํ์ํ๋ฉด GitHub Actions ๊ธฐ๋ณธ ํ ํ๋ฆฟ๋ ๋ง๋ค์ด์ค๊ฒ.
๊ถ๊ธํ ํฌ์ธํธ ์์ผ๋ฉด ๋งํด๋ด. ์๋ํ๋ ๊ท์ฐจ๋์ฆ์ ์ ๋นํํ๋ ์ ์ผํ ๊ธฐ์ ์ด๋๊น.
name: Deploy to Vercel
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Vercel CLI
run: npm install -g vercel
- name: Deploy to Vercel
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
run: vercel --prod --token $VERCEL_TOKEN
์ฌ๊ธฐ ๋๋ฅผ ์ํ Vercel ๋ฐฐํฌ ์๋ํ ์ํฌํ๋ก์ฐ์ผ. ์ด YAML ํ์ผ์ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฃจํธ์ .github/workflows/deploy.yml๋ก ์ ์ฅํ๋ฉด, main ๋ธ๋์น์ ํธ์ํ ๋๋ง๋ค ์๋์ผ๋ก Vercel์ ๋ฐฐํฌ๋ผ.
๋ค์ ํด์ผ ํ ๊ฑด:
์ด์ ๋ ์ด์ vercel --prod ์ง์ ์ ์ณ๋ ๋ผ. ๊ธฐ๊ณ๊ฐ ๋ ๋์ ์ผํ ๊ฑฐ์ผ. ๋ถ๋ฝ์ง?
์ผ๊ด๋ UI/UX๋ฅผ ์ํด ๋ง๋ ์๊ฐ์ ยท๊ตฌ์กฐ์ ๊ฐ์ด๋ ๋ชจ์์ง
์: Google์ Material Design, IBM์ Carbon, Kakao Design System
์ต์ข ์ ํ์ ํต์ฌ ๊ธฐ๋ฅ์ด๋ ์ธํฐํ์ด์ค๋ฅผ ๋ฏธ๋ฆฌ ์๊ฐํํ ์์ ํ
์: Figma๋ก ๋ง๋ ํด๋ฆญ ๊ฐ๋ฅํ ์ฑ UI โ ์ ์ ํ๋ก์ฐ ํ ์คํธ
์์ด๋์ด๋ ๊ธฐ์ ์ด โ์ค์ ๋ก ๊ฐ๋ฅํ๋คโ๋ ๊ฑธ ์ ์ฆํ๋ ์ต์ ๊ตฌํ๋ฌผ