Main: https://github.com/zagdang/design-system/pull/7
디자인 시스템을 운영하면서 가장 중요하게 생각한 부분은 '팀 간 원활한 소통'과 'UI 일관성 유지'였다. 특히 여러 팀원들과 디자인 토큰을 공유하고 피드백을 주고받는 과정에서, 지속적인 배포와 시각적 테스트의 필요성을 느꼈다.
name: 'Chromatic Deploy'
on:
push:
branches: [main, develop]
jobs:
deploy:
name: 'Deploy Storybook'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Enable Corepack
run: |
corepack enable
corepack prepare yarn@4.5.3 --activate
- name: Install dependencies
run: |
yarn install --immutable
yarn dlx @yarnpkg/sdks vscode
- name: Build Storybook
run: yarn workspace @zagdang/ui build-storybook
- name: Deploy to Chromatic
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: packages/ui
storybookBuildDir: storybook-static
autoAcceptChanges: true
이렇게 설정하면:
# .github/workflows/pr-check.yml
name: 'Chromatic PR Check'
permissions:
pull-requests: write
contents: read
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main, develop]
jobs:
review:
name: 'Review Changes'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Enable Corepack
run: |
corepack enable
corepack prepare yarn@4.5.3 --activate
- name: Install dependencies
run: |
yarn install --immutable
yarn dlx @yarnpkg/sdks vscode
- name: Build Storybook
run: yarn workspace @zagdang/ui build-storybook --webpack-stats-json
- name: Create Preview
id: chromatic
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: packages/ui
storybookBuildDir: storybook-static
onlyChanged: true
exitZeroOnChanges: true
- name: Set URL
if: success()
run: echo "STORYBOOK_URL=${{ steps.chromatic.outputs.storybookUrl }}" >> $GITHUB_ENV
- name: Comment PR
uses: thollander/actions-comment-pull-request@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message: |
📚 Storybook Preview Ready!
🔍 Review URL: ${{ env.STORYBOOK_URL }}
PR 체크 워크플로우는:
실제로 얻은 장점들:
디자인 일관성 유지
팀 커뮤니케이션 개선
배포 자동화
개발 과정
# 새로운 기능 브랜치 생성
git checkout -b feature/new-component
# 컴포넌트 개발 및 스토리 작성
yarn storybook
# 변경사항 커밋
git commit -m "feat: Add new component"
# PR 생성
git push origin feature/new-component
자동화된 검증
배포 프로세스
픽셀 단위의 변경사항 감지
실제 경험했던 사례를 보면:
예를 들어 이런 작은 변경사항도 감지했다 ( shadcn이라 다른예시를 가져와봤습니다. 예시로만 봐주세요!):
.button {
padding: 8px 16px; /* 이전 */
padding: 8px 15px; /* 변경 후 - 1px 차이 감지 */
}
이게 진짜 유용했던 게, UI 깨짐을 사전에 발견할 수 있었다. 특히 UI가 어떻게 변하는지 한눈에 볼 수 있어서 좋았다.
실제 워크플로우는 이렇게 진행됐다:
1. 변경사항 발견 시 시각적으로 하이라이트 표시
2. 변경 부분을 클릭하면 before/after 비교 가능
3. 승인 또는 거부를 통해 변경사항 관리
4. 거부된 변경사항은 자동으로 PR에 코멘트로 달림
변경사항 코멘트
정말 직관적이었다:
실제로 이런 대화가 가능했다:
팀원1: "@프론트엔드 버튼의 그림자가 디자인 가이드와 좀 다른 것 같아요"
본인: "네, box-shadow 값을 수정할께요."
팀 공유 기능
링크 하나로 모든 정보 공유가 가능했다:
특히 디자이너와 협업할 때 정말 편했다. 디자이너가 "이 버튼 좀 이상한데요?"라고 하면, 바로 해당 컴포넌트의 변경사항 페이지를 공유할 수 있었다.
버전 히스토리
커밋 단위로 모든 변경사항을 추적할 수 있었다:
자동화된 테스트
매 PR마다 자동으로:
예를 들어 Button 컴포넌트 변경 후 PR을 올리면:
1. Chromatic이 자동으로 테스트 실행
2. 변경된 스토리들 감지
3. 시각적 차이점 하이라이트
4. 결과를 PR에 코멘트로 추가
PR 상태 관리
GitHub와 긴밀하게 연동되어:
이런 자동화 덕분에 실수로 버그가 있는 코드가 머지되는 것을 여러 번 방지할 수 있었다.
이렇게 세밀한 관리 기능들이 있어서, 디자인 시스템의 품질을 훨씬 더 높은 수준으로 유지할 수 있었다. 특히 여러 팀원들이 동시에 작업할 때 발생할 수 있는 실수들을 사전에 잡아낼 수 있어서 좋았다.
현재 구축한 시스템을 기반으로:
이런 자동화 시스템 덕분에 디자인 시스템 관리가 한결 수월해졌고, 특히 팀 간 협업 과정이 많이 개선됐다.