Skip to content

chore(ci): develop PR pytest·Ruff 자동 검증 추가 #34

Description

@hywznn

배경

2026-08-13 E2E QA에서 AI 전체 테스트와 Ruff가 설치 프로필·운영체제·내장 프로젝트 경계 없이 한 명령에 섞여 있는 문제가 다시 확인됐습니다.

현재 develop 대상 PR에는 자동 status check가 없으며 main push의 배포 workflow만 실행됩니다. 따라서 기능 회귀와 선택 의존성/운영체제 차이를 PR에서 구분할 수 없습니다.

2026-08-13 재현 결과

E2E QA 시점 origin/main 보고:

  • 624개 중 618개 통과, 6개 실패
  • Qdrant/Language Retrieval 선택 의존성 미설치: 4개 실패
  • macOS PowerShell 부재: Windows OCR smoke 2개 실패

최신 develop + AI #42 작업 브랜치 재현:

  • 전체: 628 passed, 6 failed, 1 skipped
  • 환경 의존 파일을 분리한 core: 617 passed, 1 skipped
  • 남은 실패 종류는 동일하게 Qdrant 4건, PowerShell 2건

루트 Ruff 120건:

  • app + tests: E501 7건
  • 내장 hwp-editor: 105건
  • scripts: 8건

한 루트 규칙으로 서로 다른 코드 소유권과 의존성 프로필을 검사하고 있어, 전체 Ruff 실패만으로 앱 변경의 품질을 판단하기 어렵습니다.

작업

1. Core PR CI

  • .github/workflows/ci.yml 추가
  • pull_requestdevelop, main 대상
  • Python 3.12 및 고정 uv 버전 사용
  • uv sync --frozen --extra dev
  • 외부 LLM/OCR/Intent 모델·Qdrant를 비활성화한 명시적 환경
  • core pytest marker 또는 ignore 목록을 임시가 아닌 설정 파일로 관리
  • 현재 core 기준선 통과
  • app + tests Ruff E501 7건 정리 후 required check로 설정

2. Qdrant 프로필

  • uv sync --frozen --extra dev --extra language-retrieval
  • tests/integration/language/test_qdrant_retrieval.py
  • tests/integration/language/test_runtime_composition.py
  • Qdrant client 버전과 alias operation 객체 계약 고정
  • 실제 Qdrant가 필요한 테스트와 mock-only 테스트 marker 분리

3. Windows OCR 프로필

  • Windows runner 또는 PowerShell 설치 runner에서 tests/ocr/test_smoke_script.py 실행
  • non-Windows core에서는 명시적 skip/marker 처리
  • Secret 없이 로컬 HTTP 기록 서버만 사용하는 계약 유지

4. Model Provider 프로필

  • BERT/A.X/LLM 실모델 smoke를 일반 PR CI와 분리
  • protected/manual workflow에서만 HF Token·모델 캐시 사용
  • 실모델 미실행을 core 통과와 혼동하지 않도록 결과 이름 분리

5. Ruff 소유권 분리

  • AI 앱 app + tests
  • 내장 hwp-editor
  • 운영 스크립트 scripts
  • 세 범위의 규칙·기준선·담당을 별도 job 또는 별도 config로 명시
  • 신규 변경 파일은 기준선과 무관하게 오류 0건 요구

6. Branch protection

  • develop/main에 core pytest와 app Ruff를 required check로 지정
  • Qdrant·Windows OCR·실모델 check의 required 여부를 환경 가용성에 맞게 결정
  • main deploy workflow와 PR 검증 workflow 책임 분리

완료 조건

  • PR 생성·갱신 시 core 기능 회귀가 자동으로 차단됨
  • 선택 의존성/운영체제 부재가 core 기능 실패로 표시되지 않음
  • Qdrant·Windows OCR·실모델 검증 결과가 별도 check 이름으로 보임
  • 앱 변경은 내장 hwp-editor 기존 부채와 분리해 Ruff 판정 가능
  • 실패한 PR은 develop 병합 전에 확인 가능

관련 PR: #33, #44
관련 QA 작업: #42

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions