# [[Continuous Integration/Continuous Deployment (CI/CD)]] ## πŸ“Œ Brief Summary CI/CD(지속적 톡합/지속적 배포)λŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ μ½”λ“œμ˜ 병합, ν…ŒμŠ€νŠΈ 및 배포 과정을 μžλ™ν™”ν•˜λŠ” νŒŒμ΄ν”„λΌμΈμž…λ‹ˆλ‹€ [1]. ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œμ—μ„œ CI/CDλŠ” μ½”λ“œκ°€ 메인 λΈŒλžœμΉ˜μ— λ³‘ν•©λ˜κΈ° 전에 λ¦°νŒ…, ν¬λ§·νŒ…, νƒ€μž… 검사 및 ν…ŒμŠ€νŠΈλ₯Ό μžλ™μœΌλ‘œ μ‹€ν–‰ν•˜μ—¬ μ½”λ“œ ν’ˆμ§ˆκ³Ό μ•ˆμ •μ„±μ„ 보μž₯ν•©λ‹ˆλ‹€ [2, 3]. λ˜ν•œ μ‹œκ°μ  νšŒκ·€ ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό CI νŒŒμ΄ν”„λΌμΈμ— ν†΅ν•©ν•˜μ—¬ μ˜λ„μΉ˜ μ•Šμ€ UI 버그가 ν”„λ‘œλ•μ…˜μ— λ„λ‹¬ν•˜λŠ” 것을 사전에 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5]. ## πŸ“– Core Content * **μžλ™ν™”λœ κ±°λ²„λ„ŒμŠ€ 및 λΉŒλ“œ 였λ₯˜ λ°©μ§€** ν˜„λŒ€μ μΈ λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œμ—μ„œ CI/CD νŒŒμ΄ν”„λΌμΈμ€ μžλ™ν™”λœ κ±°λ²„λ„ŒμŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” 핡심적인 역할을 ν•©λ‹ˆλ‹€ [1]. κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό μ»€λ°‹ν•˜κΈ° 전에 λ¦°νŒ…, ν¬λ§·νŒ… 및 νƒ€μž… 검사λ₯Ό μˆ˜ν–‰ν•˜μ—¬ κ³ ν’ˆμ§ˆμ˜ μ½”λ“œλ§Œ μ €μž₯μ†Œμ— 듀어가도둝 보μž₯ν•©λ‹ˆλ‹€ [2]. λ˜ν•œ 둜컬 ν™˜κ²½(예: Windows, macOS)μ—μ„œλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šμ•„ 정상 λ™μž‘ν•˜λ”λΌλ„, Linux 기반의 CI/CD νŒŒμ΄ν”„λΌμΈμ—μ„œλŠ” 파일 이름(PascalCase)κ³Ό μž„ν¬νŠΈ ꡬ문(camelCase)의 λŒ€μ†Œλ¬Έμž 뢈일치둜 인해 λΉŒλ“œ μ‹€νŒ¨κ°€ λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ 이λ₯Ό 사전에 μ—„κ²©νžˆ κ²€μ‚¬ν•©λ‹ˆλ‹€ [6]. * **Git μ›Œν¬ν”Œλ‘œμš°μ™€μ˜ 톡합** μ•ˆμ •μ μΈ ν˜‘μ—…μ„ μœ„ν•΄ λͺ¨λ“  κΈ°λŠ₯ 브랜치(Feature branch)의 μ½”λ“œλŠ” λ™λ£Œμ˜ 리뷰와 CI/CD 검사λ₯Ό λͺ¨λ‘ ν†΅κ³Όν•œ ν›„μ—λ§Œ 메인 브랜치둜 λ³‘ν•©λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [3, 7]. μ†Œκ·œλͺ¨ νŒ€μ΄ μ„±μž₯함에 따라 κΈ°μ‘΄ μ›Œν¬ν”Œλ‘œμš°μ— CI 검사λ₯Ό μΆ”κ°€ν•˜μ—¬ μ•ˆμ •μ„±μ„ 높일 수 있으며 [8], 트렁크 기반 개발(Trunk-based development) μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ±„νƒν•˜λ €λ©΄ κ°•λ ₯ν•œ CI ν™˜κ²½μ΄ ν•„μˆ˜μ μœΌλ‘œ λ’·λ°›μΉ¨λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [9]. μž‘μ—… 방식을 GitHub Flow둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  λ•ŒλŠ” CI/CD 섀정을 μ—…λ°μ΄νŠΈν•˜μ—¬ 메인 λΈŒλžœμΉ˜μ—μ„œ 직접 배포(Deploy)κ°€ 이루어지도둝 ꡬ성해야 ν•©λ‹ˆλ‹€ [10]. * **μ‹œκ°μ  UI ν…ŒμŠ€νŠΈ(Visual Testing) νŒŒμ΄ν”„λΌμΈ 연동** Storybookκ³Ό 같은 ν™˜κ²½μ—μ„œ 개발된 UI μ»΄ν¬λ„ŒνŠΈλŠ” Happoλ‚˜ Chromaticκ³Ό 같은 μ‹œκ°μ  νšŒκ·€ ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό 톡해 CI에 톡합될 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5, 11]. CI νŒŒμ΄ν”„λΌμΈμ— ν•΄λ‹Ή 도ꡬ듀을 μΆ”κ°€ν•˜λ©΄, ν’€ λ¦¬ν€˜μŠ€νŠΈ(Pull Request)κ°€ 생성될 λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ μŠ€ν¬λ¦°μƒ·μ„ μΊ‘μ²˜ν•˜κ³  μ‹œκ°μ  λ³€κ²½ 사항을 λΉ„κ΅ν•˜λŠ” 리뷰 링크λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [5, 12]. 이λ₯Ό 톡해 μ½”λ“œ λ³€κ²½μœΌλ‘œ μΈν•œ UI κΉ¨μ§μ΄λ‚˜ μ ‘κ·Όμ„± μœ„λ°˜(Accessibility violations) 문제λ₯Ό 병합 전에 차단할 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 13, 14]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Git Workflow]], [[Trunk-Based Development]], [[Automated Governance]], [[Visual Regression Testing]] - **Projects/Contexts:** [[Scalable Frontend Systems]], [[Storybook Component Testing]] - **Contradictions/Notes:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (μ†ŒμŠ€ λ‚΄μ—μ„œ CI/CD의 μ—­ν• μ΄λ‚˜ μ ‘κ·Ό 방식에 λŒ€ν•œ μƒμΆ©λ˜λŠ” μ£Όμž₯은 λ°œκ²¬λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.) --- *Last updated: 2026-04-26*