Red CI에서 Green PR로 — 자동으로, 안전하게, 그리고 증거와 함께
Source: Dev.to

GitHub Copilot CLI 챌린지 제출
이 글은 GitHub Copilot CLI 챌린지를 위한 제출물입니다.
내가 만든 것
나는 copilot-ci-doctor 라는 CLI 도구를 만들었습니다. 이 도구는 GitHub Copilot CLI 를 핵심 추론 엔진으로 사용해 GitHub Actions CI 실패 를 진단하고 자동으로 수정합니다.
시끄러운 로그를 일일이 살펴보고 추측으로 고치는 대신, 이 도구는 실패한 CI 실행을 구조화된 증거 기반 워크플로우로 변환합니다:
실패 → 증거 → 추론 → 안전한 수정 → CI 성공 → 풀 리퀘스트
실패한 워크플로우가 주어지면 copilot-ci-doctor 는:
- 태그가 달린 Evidence Bundle (레포 메타데이터, 실패한 잡, 로그, 워크플로우 YAML) 을 수집합니다
- GitHub Copilot CLI 를 사용해 실패 원인을 추론합니다
- CI가 왜 실패했는지 영어로 설명합니다
- 최소한의 안전한 패치 diff 와 신뢰도 점수를 생성합니다
- CI가 통과할 때까지 반복적으로 수정을 적용합니다
main브랜치에 자동으로 Pull Request 를 엽니다
이는 로그 요약이나 자동 완성이 아닙니다. Copilot 은 증거를 기반으로 결론을 정당화해야 하는 추론 엔진 으로 사용됩니다.
데모
40초짜리 엔드‑투‑엔드 데모 (시청 권장):
👉
한 번의 명령 → 실패한 CI → Copilot 추론 → 안전한 수정 → CI 성공 → PR
npx copilot-ci-doctor demo
데모가 보여주는 내용:
- 고의로 깨진 GitHub Actions 워크플로우를 가진 데모 레포가 생성됩니다
- CI가 실패합니다 ❌
copilot-ci-doctor가 자동 루프에 들어갑니다:- 실패를 분석하고
- 근본 원인을 설명하고
- 최소한의 패치를 제안하고
- 적용 및 푸시하고
- CI 재실행을 기다립니다
- 필요에 따라 여러 번 반복됩니다
- CI가 초록색으로 변합니다 ✅
- 수정 사항이 포함된 Pull Request 가 자동으로 열립니다
데모는 실제 GitHub 지연 시간을 고려하며 전체 수명 주기를 보여줍니다. 포함 내용:
- 여러 CI 실패 사례
- diff 미리보기
- 반복 점수판
- 최종 PR 링크
소스 코드와 데모 자산:
npm 패키지:
GitHub Copilot CLI 사용 경험
이 프로젝트는 내가 GitHub Copilot을 생각하는 방식을 근본적으로 바꾸어 놓았습니다.
코드를 작성하기 위해 Copilot 을 사용하는 대신, GitHub Copilot CLI 를 시스템을 추론하는 도구로 활용했습니다.
Copilot CLI 는 다음에 사용됩니다:
- CI 증거를 분석하고 순위가 매겨진 가설을 형성
- 실패를 영어로 설명 (예: 왜 로컬에서는 통과되지만 CI에서는 실패하는가)
- 전체 재작성 대신 최소한의 통합 diff 를 생성
- 각 수정에 신뢰도 점수와 위험 수준을 부착
이를 신뢰성 있게 만들기 위해:
- 모든 Copilot 응답은 엄격한 JSON 계약을 따릅니다
- 각 결론은 증거 ID (E1, E2, …) 를 참조합니다
- 패치 diff 는 적용 전에 검증 및 정규화됩니다
- 단일 호출 모드 로 분석, 설명, 패치 생성을 한 번에 수행해 토큰 사용량을 약 60% 절감
그 결과 Copilot 은 보조 도구라기보다 신중하고 설명 가능한 CI 엔지니어처럼 동작하는 워크플로우가 완성되었습니다.
이번 챌린지는 자동완성의 범위를 넘어, Copilot CLI 로 복잡하고 실제 개발 현장에서 안전하게 자동화할 수 있는 워크플로우를 탐구하도록 만들었습니다.