learn

CI (Continuous Integration)

CI (Continuous Integration)

한 줄 정의

코드가 변경될 때마다 테스트와 검증을 자동으로 실행하는 파이프라인.

흐름

코드 push
    ↓
CI가 자동으로:
  1. 테스트 실행 (pytest, jest 등)
  2. lint 검사
  3. structural test (AC test)
    ↓
통과 → merge 가능
실패 → merge 차단

Harness Engineering에서 CI가 중요한 이유

agent가 코드를 짤 때 규칙 준수 여부를 인간이 매번 확인하면 병목이 생긴다. CI에 structural test를 넣어두면:

agent가 코드 작성
    ↓
CI 자동 실행
    ↓
레이어 위반 발견 → merge 차단
    ↓
agent가 스스로 수정 → 인간 개입 없음

NxCode 사례: CI가 agent 생성 코드의 약 15%를 잡아낸다.

실제 설정 예시 (GitHub Actions)

# .github/workflows/ci.yml
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: pip install -r requirements.txt
      - run: pytest tests/test_architecture.py  # AC test (레이어 구조 검증)
      - run: pytest tests/                       # 일반 테스트

Harness 레이어에서의 위치

AC test (tests/test_architecture.py)  →  위반을 사전에 차단
CI (.github/workflows/ci.yml)         →  AC test를 자동으로 실행하는 트리거

CI 없이 AC test만 있으면 → 개발자가 직접 실행해야 함 (잊기 쉬움) CI가 있으면 → push할 때마다 자동 실행 → agent가 무시할 수 없음

관련 개념