[storybook] ์Šคํ† ๋ฆฌ๋ถ chromatic, github actions ์‚ฌ์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๊ธฐ

2024. 4. 10. 18:00ยท๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ/React

๐Ÿ› ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

- React: 18.2.0 (vite 5.0.8.)

- Storybook: 8.0.2.

 

๐Ÿ”— ์ฐธ๊ณ 

https://velog.io/@93minki/Storybook-Chromatic-%EC%9C%BC%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

 

Storybook Chromatic ์œผ๋กœ ๋ฐฐํฌํ•˜๊ธฐ

์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌํ•˜๊ธฐ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ  ํ–ˆ๋‹ค.๊ณต์‹๋ฌธ์„œ์— ์ƒ์„ธํ•˜๊ฒŒ ์ ˆ์ฐจ๊ฐ€ ๋‚˜์™€ ์žˆ์ง€๋งŒ ์กฐ๊ธˆ ๋” ์ƒ์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณธ๋‹ค.์šฐ์„  Next ๋˜๋Š” React ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ๋‹ค.๊ทธ๋ฆฌ๊ณ  npx storybook@latest init ๋ช…๋ น์–ด

velog.io

https://min-kyung.tistory.com/160

 

Chromatic์œผ๋กœ Storybook ์ง€์†์  ๋ฐฐํฌํ•˜๊ธฐ (Github Actions)

TL;DR 1. ์Šคํ† ๋ฆฌ๋ถ์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ 2. chromatic์œผ๋กœ ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌํ•˜๊ธฐ 3. Github Actions๋ฅผ ์ด์šฉํ•ด Pull Reqeust์—์„œ ๋ฐ”๋กœ ์ปดํฌ๋„ŒํŠธ ํ™•์ธํ•˜๊ธฐ ์Šคํ† ๋ฆฌ๋ถ์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ˜‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ

min-kyung.tistory.com

https://velog.io/@qmflf556/storybook-%EC%9E%90%EB%8F%99-%EB%B0%B0%ED%8F%AC

 

storybook ์ž๋™ ๋ฐฐํฌ

์ด๋ฏธ origin ์€ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ์ค‘์ด๋ผ ๋‹ค๋ฅธ ์ด๋ฆ„์ธ storybook ์œผ๋กœ remote ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋ ˆํฌ์— ํ‘ธ์‹œํ•ด์ฃผ์—ˆ๋‹ค.์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ๋‹ค.https://www.chromatic.com/start?utm_source=storybook_w

velog.io

https://www.chromatic.com/docs/storybook/setup/

 

Introduction • Chromatic docs

Chromatic is a cloud based toolchain built around Storybook to help teams develop robust UI components faster, together.

www.chromatic.com

 

 

โœ๏ธ ์ง„ํ–‰๊ณผ์ •

1. chromatic (ํฌ๋กœ๋งˆํ‹ฑ ์„ค์น˜)

chromatic ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ์ด๋ฏธ์ง€ ์บก์ณ

 

npm install --save-dev chromatic
npx chromatic --project-token='๋ณธ์ธ ํ† ํฐ'

 

ํฌ๋กœ๋งˆํ‹ฑ ๊ฐ€์ž…(๊นƒํ—ˆ๋ธŒ ์•„์ด๋””๋กœ ๊ฐ€์ž…ํ•˜๋Š”๊ฒŒ ํŽธํ•จ) > ํฌ๋กœ๋งˆํ‹ฑ ์„ค์น˜ > ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ

 

 

์œ„ ๊ณผ์ •๋งŒ ์ง„ํ–‰ํ•ด๋„ ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ธฐ์—” ๋ถˆํŽธํ•จ์ด ์žˆ๊ธฐ์— ๊นƒํ—ˆ๋ธŒ ์•ก์…˜์„ ์‚ฌ์šฉํ•ด์„œ

๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

2. github-actions

name: 'Chromatic-Storybook Deployment'
run-name: deploy storybook by ${{ github.actor }}

on:
  pull_request:
    branches:
      - deploy
    paths:
      - '**.stories.ts'
      - '**.stories.tsx'
      - '**.mdx'

jobs:
  chromatic-storybook-deploy:
    runs-on: ubuntu-latest
    outputs:
      status: ${{ job.status }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Cache npm
        id: npm-cache
        uses: actions/cache@v4
        with:
          path: '**/node_modules'
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
      - if: steps.npm-cache.outputs.cache-hit != 'true'
        run: npm ci

      - name: Run Chromatic
        id: chromatic
        uses: chromaui/action@latest
        with:
          projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
          token: ${{ secrets.GITHUB_TOKEN }}
          exitZeroOnChanges: true

      - name: Publish Summary
        run: echo -e "| Results |  |\n| --- | --- |\n| Build Results | ${{ steps.chromatic.outputs.buildUrl }} |\n| Storybook Preview | ${{ steps.chromatic.outputs.storybookUrl }} |\n| Component Count | ${{ steps.chromatic.outputs.componentCount }} |" >> $GITHUB_STEP_SUMMARY

      - name: Discord Webhook
        uses: tsickert/discord-webhook@v5.3.0
        with:
          webhook-url: ${{ secrets.DISCORD_WEBHOOK }}
          content: 'storybook link -> ${{ steps.chromatic.outputs.storybookUrl }}'

 

๊นƒํ—ˆ๋ธŒ ์•ก์…˜์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์ด๋ผ ์œ„ ๋ธ”๋กœ๊ทธ๋“ค์„ ๋งŽ์ด ์ฐธ๊ณ ํ–ˆ๋‹ค.

deploy ๋ธŒ๋žœ์น˜์— ์Šคํ† ๋ฆฌ ํŒŒ์ผ๋“ค์ด PR์ด ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜๋„๋ก ์„ค์ •ํ•˜์˜€๊ณ ,

๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํฌ๋กœ๋งˆํ‹ฑ ๋นŒ๋“œ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€, ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ๋งํฌ, ์ปดํฌ๋„ŒํŠธ ๊ฐœ์ˆ˜ ๊ฐ’์ด ํ‘œ๋กœ ๋ณด์ด๋„๋ก ํ•˜์˜€๋‹ค.

(์ด ๋ถ€๋ถ„์€ ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.)

 

์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ์™€ ๋‹ค๋ฅธ์ ์€ ๋””์Šค์ฝ”๋“œ ์›น ํ›…์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค๋Š” ์ ์ด๋‹ค.

 

 

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์›๋ž˜ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด PR ํŽ˜์ด์ง€์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ณด๋‚ด๋„๋ก ์„ค์ •ํ•ด์„œ

๋ฐฐํฌ๋œ ์Šคํ† ๋ฆฌ๋ถ ๋งํฌ๋ฅผ ๋””์Šค์ฝ”๋“œ๋กœ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ ์žˆ์—ˆ๋‹ค.

 

๋””์Šค์ฝ”๋“œ ๊ฐœ์ธ ์„œ๋ฒ„์—์„œ๋งŒ ๋ชจ๋“  ์•Œ๋ฆผ์ด ์˜ค๋„๋ก ํ•ด๋‘์—ˆ๋Š”๋ฐ,

์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ ๋งํฌ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํŒ€์› ๋ชจ๋‘ ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ

์Šคํ„ฐ๋”” ํŒ€ ๋””์Šค์ฝ”๋“œ ์ฑ„๋„์—๋„ ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ ๋งํฌ๋งŒ ์•Œ๋ฆผ์ด ์˜ค๊ฒŒ ํ•˜๊ณ ์‹ถ์—ˆ๋‹ค.

 

 

๊ทธ๋ž˜์„œ ๋””์Šค์ฝ”๋“œ ์›นํ›…์„ ์„ค์ •ํ•ด์„œ PR ์ฝ”๋ฉ˜ํŠธ๋งŒ ๋ฐ›๋„๋ก ํ–ˆ๋Š”๋ฐ,

๊ณ„์† ๋ฉ”์„ธ์ง€๊ฐ€ ์•ˆ์™”๋‹ค... ๋ญ”๊ฐ€ ๋‹ค๋ฅธ๊ฑธ ํ•ด์ค˜์•ผํ•˜๋Š” ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ ์‹คํŒจํ•ด์„œ

 

 

์œ„ ์ฝ”๋“œ์— ๋””์Šค์ฝ”๋“œ ์›นํ›… ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋”๋‹ˆ ์„ฑ๊ณตํ–ˆ๋‹ค.

 

 

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด secrets.~~์ด ์ ํžŒ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ

๊ทธ ๋ถ€๋ถ„์€ ๊นƒํ—ˆ๋ธŒ์— Security > Secrets and variables > Actions์— ๋“ฑ๋ก์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ฝ”๋“œ์— ์ž‘์„ฑํ•œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ‚ค์บ†์„ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

ํฌ๋กœ๋งˆํ‹ฑ ํ† ํฐ์€ ์ฒ˜์Œ์— ํฌ๋กœ๋งˆํ‹ฑ ๋ฐฐํฌํ•  ๋•Œ ๋ฐ›์•˜๋˜ ๊ฐ’์„ ๋“ฑ๋กํ•ด์ฃผ๋ฉด ๋˜๊ณ ,

๋””์Šค์ฝ”๋“œ ์›นํ›„ํฌ๋Š” ๋””์Šค์ฝ”๋“œ์˜ webhooks ๋งํฌ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

๋””์Šค์ฝ”๋“œ ์›นํ›„ํฌ ๋งํฌ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์ฃผ์˜์ ์€ ๊นƒํ—ˆ๋ธŒ ํŽ˜์ด์ง€์— ์›นํ›… ๋งํฌ๋ฅผ ๋“ฑ๋กํ• ๋•Œ์ฒ˜๋Ÿผ

์›นํ›„ํฌ URL ๋งˆ์ง€๋ง‰์— '/github'๋ฅผ ๋„ฃ์–ด์ค˜์•ผํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„๋‹ˆ์—ˆ๋‹ค.

๊ทธ๋ƒฅ ์›นํ›„ํฌ URL์„ ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

๊ทธ๊ฑธ ๋ชฐ๋ผ์„œ ๋ช‡ ๋ฒˆ ์˜ค๋ฅ˜๋ฅผ ๋ดค์—ˆ๋‹ค... ๊ทธ๋ž˜๋„ ํ•ด๊ฒฐํ•ด์„œ ๋‹คํ–‰๐Ÿฅน

728x90
'๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ/React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [React] ๋ฐฐ์—ด ๋ Œ๋”๋ง์— key๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 
  • [React] ๋ฆฌ์•กํŠธ Portal(ํฌํƒˆ) ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋‹ฌ ๊ตฌํ˜„ํ•˜๊ธฐ
  • [storybook] ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์Šคํ† ๋ฆฌ๋ถ ์‚ฌ์šฉํ•˜๊ธฐ
  • [React] SCSS ์ „์—ญ์„ค์ •ํ•˜๊ธฐ
_์ด์•Ž
_์ด์•Ž
๊ณต๋ถ€ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ
  • _์ด์•Ž
    ๊ณต๋ถ€
    _์ด์•Ž
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • โœ๏ธ ๋ชจ๋“  ๊ธ€ (51)
      • ๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ (36)
        • React (9)
        • HTML_CSS (9)
        • Javascript (13)
        • git_github (4)
        • Web (1)
      • ๐Ÿ‘€ ํ”„๋กœ์ ํŠธ ๋ฐ ํ™œ๋™ (11)
        • ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ 19๊ธฐ (11)
      • ๐Ÿ“ ๊ณต์‹๋ฌธ์„œ ์ดํ•ดํ•˜๊ธฐ (0)
      • โš™๏ธ etc. (4)
  • ๋งํฌ

    • ๐Ÿ‘‹ GitHub
    • ๐Ÿง ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ธฐ๋ก
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.4
_์ด์•Ž
[storybook] ์Šคํ† ๋ฆฌ๋ถ chromatic, github actions ์‚ฌ์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”