CI 분류 에이전트
실패한 CI 조사를 자동화하고, 요약을 생성하고, 수정을 제안하고, 이슈 및 pull request로 추적합니다.
GitHub Actions 파이프라인이 실패할 때, 근본 원인을 찾기 위해서는 로그를 읽고, 컨텍스트를 이해하고, 판단을 내려야 합니다. AI 기반 CI 분류 에이전트는 이를 24/7 자동화할 수 있습니다.
에이전트가 수행하는 작업
CI 분류 에이전트는 CI 실행을 지속적으로 모니터링하며, 빌드가 실패할 때:
- CI 로그 읽기 — GitHub Actions 로그를 가져오고 오류 출력을 파싱합니다
- 컨텍스트 분석 — 최근 커밋, PR 및 코드 변경 사항을 검토합니다
- 요약 생성 — 코드 조각과 함께 간결한 근본 원인 분석을 작성합니다
- 수정 제안 — 구체적인 변경이나 디버깅 단계를 제안합니다
- 조치 취하기 — GitHub 이슈를 생성하거나, PR 드래프트를 열거나, 원래 PR에 댓글을 답니다
- 해결 추적 — PR이 병합될 때 수정 상태로 이슈를 업데이트합니다
설정
사전 조건
- 활성 에이전트가 있는 AACWorkflow 작업 영역(참조 빠른 시작)
- GitHub 통합 활성화(설정 → 통합)
- 에이전트가 GitHub API에 액세스 가능(repo, actions scope)
단계 1: CI 분류 에이전트 생성
- 설정 → 에이전트로 이동하고 새 에이전트를 클릭합니다
- 런타임과 제공자를 선택합니다(Claude Code, Codex 또는 유사)
ci-triage또는build-doctor로 이름을 지정합니다- 구성을 열고 스킬 또는 사용자 지정 프롬프트를 추가합니다:
역할: 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 작업을 다시 트리거하여 통과하는지 확인합니다
- 불안정한 테스트 감지 — 테스트가 재시도 시 통과하면 불안정으로 표시하고 별도의 조사 작업을 생성합니다
관련 가이드
- 종속성 업데이트 에이전트 — 보안 업데이트를 위한 유사한 자동화
- 릴리스 노트 에이전트 — 무엇이 변경되었고 왜 추적합니다