[κΈ°μˆ μ •λ¦¬] πŸ“Œ 톡합 CI Workflow 파일 (lint_and_test.yml) - DDAL-KKAK-DOT/DDALKKAK GitHub Wiki

πŸ“Œ DDALKKAK ν”„λ‘œμ νŠΈ CI ꡬ좕 κ°€μ΄λ“œ (pylint & pytest)

DDALKKAK ν”„λ‘œμ νŠΈλŠ” μ½”λ“œ ν’ˆμ§ˆ μœ μ§€ 및 지속 κ°€λŠ₯ν•œ 개발 ν™˜κ²½μ„ μœ„ν•΄ CI/CD νŒŒμ΄ν”„λΌμΈμ—μ„œ 정적 뢄석(pylint)κ³Ό ν…ŒμŠ€νŠΈ μžλ™ν™”(pytest) λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.


βœ… CI κ°œμš”

  • PR이 dev-be 브랜치둜 생성될 λ•Œλ§ˆλ‹€ μžλ™ μ‹€ν–‰
  • pylint μ μˆ˜κ°€ 8점 이상이어야 톡과
  • pytestλ₯Ό μ‚¬μš©ν•œ μ½”λ“œ μ•ˆμ •μ„± 검증
  • 인증 ν‚€κ°€ ν•„μš”ν•œ ν…ŒμŠ€νŠΈλŠ” μžλ™μœΌλ‘œ μ œμ™Έ

πŸš€ 1️⃣ pylint μ„€μ • (정적 뢄석)

pylintλŠ” μ½”λ“œ 가독성과 ν’ˆμ§ˆμ„ 높이기 μœ„ν•œ 핡심 λ„κ΅¬λ‘œ λ‹€μŒ 기쀀을 μ‚¬μš©ν•©λ‹ˆλ‹€.

πŸ› οΈ κΈ°μ€€ μ„€μ •

  • μ΅œμ†Œ 점수: 8.0

  • μ œμ™Έ ν•­λͺ©:

    • missing-module-docstring
    • missing-function-docstring
    • import-error
    • broad-exception-caught

πŸ“„ YAML μ„€μ • μ˜ˆμ‹œ

- name: Run pylint
  run: |
    pylint backend \
      --disable=missing-module-docstring,missing-function-docstring,import-error,broad-exception-caught \
      --fail-under=8

πŸš€ 2️⃣ pytest μ„€μ • (μžλ™ν™” ν…ŒμŠ€νŠΈ)

pytestλŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ κΈ°λŠ₯ 검증 및 μ‹ λ’°μ„± ν–₯상에 ν•΅μ‹¬μž…λ‹ˆλ‹€.

πŸ› οΈ μ£Όμš” μ„€μ •

  • ν…ŒμŠ€νŠΈ μ½”λ“œ μœ„μΉ˜: backend/test
  • 인증 ν‚€κ°€ ν•„μš”ν•œ test_api.py 및 test_gemini.py μ œμ™Έ
  • 컀버리지 κ²€μ‚¬λŠ” μ œμ™Έ

πŸ“„ YAML μ„€μ • μ˜ˆμ‹œ

- name: Install dependencies
  run: |
    pip install -r requirements.txt
    pip install pytest

- name: Run pytest (exclude API/Gemini tests)
  env:
    PYTHONPATH: ${{ github.workspace }}
  run: |
    pytest backend/test \
      --ignore=backend/test/test_api.py \
      --ignore=backend/test/test_gemini.py

πŸ“‹ 전체 CI μ‹€ν–‰ 흐름

flowchart LR
PR["PR 생성 (dev-be 브랜치)"] --> Lint[pylint 검사]
PR --> Test[pytest μ‹€ν–‰]

Lint -->|점수 8 미만| FailLint[❌ μ‹€νŒ¨]
Lint -->|점수 8 이상| PassLint[βœ… 톡과]

Test -->|μ‹€νŒ¨ λ°œμƒ| FailTest[❌ μ‹€νŒ¨]
Test -->|λͺ¨λ“  ν…ŒμŠ€νŠΈ 톡과| PassTest[βœ… 톡과]

PassLint & PassTest --> Merge["πŸŽ‰ PR Merge κ°€λŠ₯"]
FailLint & FailTest --> Reject["⚠️ PR μˆ˜μ • ν•„μš”"]

πŸ›‘οΈ κ²°λ‘  및 μž₯점

  • μ½”λ“œ ν’ˆμ§ˆκ³Ό 가독성 ν–₯상
  • λΉ λ₯Έ 버그 발견 및 예방
  • μ•ˆμ •μ μ΄κ³  효율적인 개발 ν™˜κ²½ ꡬ좕