AACWorkflow Docs

CI 분류 에이전트

실패한 CI 조사를 자동화하고, 요약을 생성하고, 수정을 제안하고, 이슈 및 pull request로 추적합니다.

GitHub Actions 파이프라인이 실패할 때, 근본 원인을 찾기 위해서는 로그를 읽고, 컨텍스트를 이해하고, 판단을 내려야 합니다. AI 기반 CI 분류 에이전트는 이를 24/7 자동화할 수 있습니다.

에이전트가 수행하는 작업

CI 분류 에이전트는 CI 실행을 지속적으로 모니터링하며, 빌드가 실패할 때:

  1. CI 로그 읽기 — GitHub Actions 로그를 가져오고 오류 출력을 파싱합니다
  2. 컨텍스트 분석 — 최근 커밋, PR 및 코드 변경 사항을 검토합니다
  3. 요약 생성 — 코드 조각과 함께 간결한 근본 원인 분석을 작성합니다
  4. 수정 제안 — 구체적인 변경이나 디버깅 단계를 제안합니다
  5. 조치 취하기 — GitHub 이슈를 생성하거나, PR 드래프트를 열거나, 원래 PR에 댓글을 답니다
  6. 해결 추적 — PR이 병합될 때 수정 상태로 이슈를 업데이트합니다

설정

사전 조건

  • 활성 에이전트가 있는 AACWorkflow 작업 영역(참조 빠른 시작)
  • GitHub 통합 활성화(설정 → 통합)
  • 에이전트가 GitHub API에 액세스 가능(repo, actions scope)

단계 1: CI 분류 에이전트 생성

  1. 설정 → 에이전트로 이동하고 새 에이전트를 클릭합니다
  2. 런타임과 제공자를 선택합니다(Claude Code, Codex 또는 유사)
  3. ci-triage 또는 build-doctor로 이름을 지정합니다
  4. 구성을 열고 스킬 또는 사용자 지정 프롬프트를 추가합니다:
역할: CI 실패 조사자
작업: GitHub Actions 작업이 실패할 때:
1. GitHub API에서 빌드 로그를 가져옵니다
2. 오류 메시지 및 스택 추적을 파싱합니다
3. 실패한 커밋의 git diff를 확인합니다
4. 근본 원인을 2-3개 글머리 기호로 요약합니다
5. 한 줄 수정 또는 디버깅 명령을 제안합니다
6. "ci-failure" 레이블이 있는 GitHub 이슈를 생성합니다
7. 이슈를 원래 PR에 연결합니다

컨텍스트: 간결하게 작성하세요. 무엇이 작동했는지가 아니라 무엇이 부서졌는지에 집중하세요.

단계 2: 트리거 연결

GitHub Actions 워크플로우 .github/workflows/notify-ci-triage.yml을 추가합니다:

name: Notify CI Triage Agent

on:
  workflow_run:
    workflows: ["Build", "Test"]
    types: [completed]

jobs:
  notify:
    if: failure()
    runs-on: ubuntu-latest
    steps:
      - name: Trigger CI triage agent
        run: |
          curl -X POST https://aacworkflow.com/api/webhooks/ci-failed \
            -H "Authorization: Bearer ${{ secrets.AACWORKFLOW_TOKEN }}" \
            -H "Content-Type: application/json" \
            -d '{
              "workflow_run_id": "${{ github.run_id }}",
              "repository": "${{ github.repository }}",
              "branch": "${{ github.ref }}"
            }'

webhook URL을 AACWorkflow 인스턴스의 엔드포인트로 바꿉니다(또는 Zapier/Make 통합을 대체로 사용).

단계 3: 작업 할당

GitHub 이슈를 ci-triage 에이전트에 ci-failure 레이블을 지정하여 할당합니다. 에이전트가 깨어나서 조사합니다.

출력 예제

입력: GitHub Actions 작업이 데이터베이스 마이그레이션 테스트 중 "연결 시간 초과"로 인해 실패합니다.

에이전트 요약:

근본 원인: 마이그레이션 스크립트 시간 초과. 테스트 풀에는 2개의 연결만 있습니다. 병렬 마이그레이션이 풀을 소진합니다.

수정: 테스트 환경에서 DB_POOL_SIZE=5를 증가합니다.

PR 작성: 수정 사항이 있는 #1437. 테스트 재실행이 요청되었습니다.

취한 조치: 이슈 #1436 "CI: DB pool exhaustion on migration tests"를 생성하고, PR #1437을 드래프트로 열고, 원래 PR에 요약을 댓글합니다.


팁 및 모범 사례

과도하게 자동화하지 마세요. 에이전트는 조사하고 제안해야 하며, 인간이 검토하고 병합해야 합니다. draft PR과 GitHub 이슈 댓글을 사용하여 인간을 루프에 유지하세요.

  • 레이블 패턴 — CI 실패에 일관된 레이블(ci-failure, ci-blocking, ci-flaky)을 태그하여 필터링하고 우선 순위를 지정할 수 있습니다
  • Slack 통합 — 에이전트 발견 사항을 Slack 채널로 파이프하여 팀 전체에 표시합니다
  • 수정 시 재시도 — 수정이 병합되면 에이전트가 CI 작업을 다시 트리거하여 통과하는지 확인합니다
  • 불안정한 테스트 감지 — 테스트가 재시도 시 통과하면 불안정으로 표시하고 별도의 조사 작업을 생성합니다

관련 가이드