CI/CD의 새 언어는 자연어다 — GitHub Agentic Workflows 해부
YAML 들여쓰기를 한 칸 틀려서 파이프라인이 깨지고, 30분을 허비한 경험이 한 번쯤은 있을 것이다. needs, uses, with의 미묘한 조합을 외우다 지친 적도 있을 것이다. GitHub이 이 고통에 정면으로 답했다. 워크플로우를 마크다운으로 기술하고, AI 에이전트가 해석해서 실행하는 Agentic Workflows다.
레시피북에서 셰프로 — Agentic Workflows의 정체
GitHub Agentic Workflows는 .github/workflows/ 디렉토리에 마크다운 파일을 넣으면, AI 코딩 에이전트가 지시를 읽고 리포지토리 맥락을 활용해 작업을 수행하는 시스템이다. GitHub, Microsoft Research, Azure Core Upstream의 협업 결과물이며, 현재 기술 프리뷰(Technical Preview) 단계다.
기존 GitHub Actions가 한 글자도 틀리면 안 되는 요리 레시피북이라면, Agentic Workflows는 "냉장고에 뭐 있는지 보고 적당히 저녁 만들어줘"라고 지시할 수 있는 AI 셰프다. 정해진 스텝을 기계적으로 따르는 것이 아니라, 상황을 파악하고 판단해서 행동한다.
지원하는 AI 에이전트는 세 가지다.
| 에이전트 | 제작사 | 특징 |
|---|---|---|
| GitHub Copilot | GitHub | GitHub 네이티브 통합 |
| Claude | Anthropic | 코드 분석과 추론에 강점 |
| OpenAI Codex | OpenAI | 코드 생성 특화 |
[💡 잠깐! 이 용어는?] AI 에이전트(AI Agent): 단순 질의응답을 넘어, 스스로 계획을 세우고 도구를 사용해 작업을 수행하는 AI 시스템. 코드를 읽고, 수정하고, PR을 생성하는 등 개발자의 행동을 자율적으로 수행할 수 있다.
마크다운 한 장의 해부학 — 파일 구조
Agentic Workflow 파일은 YAML 프론트매터와 마크다운 지시사항, 두 층으로 구성된다.
---
name: Issue Triage
description: Automatically triage and label new issues
triggers:
- issues:
types: [opened]
model: copilot
permissions:
issues: write
contents: read
safe-outputs:
- labels: 1-3
- comment: 1
---
## Task
When a new issue is opened, analyze its content and apply appropriate labels.
### Steps
1. Read the issue title and body
2. Check existing labels in the repository
3. Determine the most relevant labels (1-3) based on:
- Issue type (bug, feature, documentation, question)
- Affected area (frontend, backend, infrastructure)
- Priority (critical, high, medium, low)
4. Apply the labels
5. If the issue lacks sufficient detail, add a comment asking for more information프론트매터가 규칙을 선언한다. 언제 실행할지(triggers), 뭘 읽을 수 있는지(permissions), 어떤 쓰기가 허용되는지(safe-outputs). 마크다운 본문은 AI 에이전트에게 건네는 지시서다. 자연어로 "뭘 해야 하는지"를 기술한다.
비유하면 프론트매터는 직원에게 주는 출입증과 권한카드이고, 마크다운 본문은 업무 지시서다. 출입증으로 어디까지 갈 수 있는지 정하고, 지시서로 뭘 해야 하는지 알려주는 구조다.
컴파일이라는 안전장치 — .lock.yml의 역할
마크다운 파일을 작성했다고 바로 돌아가는 것이 아니다. gh aw CLI로 컴파일 단계를 거친다.
gh aw compile이 명령이 마크다운을 읽고, 보안 검증을 수행한 뒤, .lock.yml 파일을 생성한다. GitHub Actions가 실제로 실행하는 것은 이 lock 파일이다.
.github/workflows/
├── issue-triage.md ← 사람이 읽고 편집하는 소스 파일
└── issue-triage.lock.yml ← 컴파일된 Actions 워크플로우 (자동 생성)이름에서 짐작할 수 있듯이 package-lock.json과 같은 맥락이다. 컴파일 시점의 설정을 잠가두어(lock) 재현성과 감사 가능성을 보장한다. 두 파일 모두 버전 관리에 커밋해야 한다.
[💡 잠깐! 이 용어는?] Safe-Outputs: Agentic Workflows의 핵심 보안 메커니즘. AI 에이전트에게 직접 쓰기 권한을 주지 않고, 미리 승인된 유형의 출력(라벨 추가, 코멘트 작성, PR 생성 등)만 허용하는 방식이다.
울타리 안의 AI — 보안 모델 설계
AI 에이전트에게 리포지토리 접근 권한을 주는 것은 본질적으로 위험하다. GitHub은 이를 위해 7겹의 보안 계층을 설계했다.
| 보안 계층 | 설명 |
|---|---|
| 기본 읽기 전용 | 워크플로우는 기본적으로 읽기 권한만 가진다 |
| Safe-Outputs | 쓰기 작업은 미리 정의된 유형과 횟수로 제한 |
| 샌드박스 실행 | AI 에이전트는 격리된 컨테이너에서 실행 |
| 네트워크 격리 | 외부 네트워크 접근 제한 |
| SHA 고정 의존성 | 모든 의존성을 해시로 고정해 공급망 공격 방지 |
| 도구 허용 목록 | AI가 사용할 수 있는 도구를 명시적으로 제한 |
| 컴파일 타임 검증 | gh aw compile 시점에 보안 정책 검증 |
기존 GitHub Actions와 나란히 놓으면 차이가 선명하다.
| 기준 | 기존 GitHub Actions | Agentic Workflows |
|---|---|---|
| 작성 언어 | YAML | 마크다운 |
| 로직 | 명시적 단계 정의 | 자연어 지시 |
| 유연성 | 고정된 흐름 | AI가 상황에 맞게 판단 |
| 보안 | 토큰 기반 권한 | Safe-Outputs + 샌드박스 |
| 학습 곡선 | 높음 (YAML 문법) | 낮음 (자연어) |
| 디버깅 | 로그 기반 | 로그 + AI 판단 과정 추적 |
실전 시나리오 — 어디에 쓸 수 있나
CI 실패를 AI가 고치는 워크플로우
CI가 깨지면 로그를 분석해 원인을 파악하고, 간단한 문제는 직접 수정 PR을 생성한다. 복잡한 문제는 사람에게 보고한다.
---
name: CI Failure Auto-Fix
description: Analyze CI failures and suggest or apply fixes
triggers:
- check_run:
types: [completed]
conclusion: [failure]
model: claude
permissions:
contents: read
pull-requests: read
checks: read
safe-outputs:
- pull-request: 1
---
## Task
When a CI check fails, analyze the failure and attempt to fix it.
### Steps
1. Read the failed check run logs
2. Identify the root cause of the failure
3. If the fix is straightforward (lint error, type error, missing import):
- Create a fix and open a pull request
4. If the fix requires human judgment:
- Add a comment to the PR explaining the failure and suggesting approaches24시간 대기하는 주니어 개발자가 CI 실패를 감시하면서 간단한 건 직접 고치고, 복잡한 건 시니어에게 보고하는 구조와 같다.
이슈 자동 분류
새 이슈가 열리면 AI가 내용을 분석해 라벨을 붙이고, 정보가 부족하면 추가 정보를 요청한다.
PR 자동 리뷰
PR이 생성되면 코드 변경을 분석해 잠재적 문제를 지적하고, 테스트 커버리지를 확인하고, 개선 제안을 코멘트로 남긴다.
[💡 잠깐! 이 용어는?] Technical Preview: 정식 출시 전 단계로, 기능이 변경되거나 제거될 수 있다. 프로덕션 환경에서의 사용은 주의가 필요하며, 피드백을 수집하기 위한 목적으로 공개된다.
시작 가이드
gh extension install github/gh-aw
gh aw init
gh aw compile
git add .github/workflows/
git commit -m "feat: add agentic workflow for issue triage"
git push에이전트별로 필요한 시크릿이 다르다.
| 에이전트 | 필요한 시크릿 |
|---|---|
| Copilot | COPILOT_GITHUB_TOKEN |
| Claude | ANTHROPIC_API_KEY |
| Codex | OPENAI_API_KEY |
리포지토리 Settings > Secrets에서 해당 키를 설정하면 된다.
마무리
GitHub Agentic Workflows는 CI/CD 파이프라인에 AI 에이전트를 공식적으로 투입하는 첫 시도다. YAML 문법과 씨름하는 대신 자연어로 의도를 기술하고, AI가 맥락을 파악해 실행하는 패러다임은 매력적이다. 다만 아직 기술 프리뷰 단계이므로, 핵심 CI/CD 파이프라인보다는 이슈 분류나 코드 리뷰 보조 같은 부가적인 자동화부터 시도해보는 것이 현실적이다.
참고:
- GitHub Agentic Workflows 문서: https://github.github.io/gh-aw/
- GitHub Blog: https://github.blog/changelog/2026-02-13-github-agentic-workflows-are-now-in-technical-preview/
- gh-aw CLI: https://github.com/github/gh-aw
관심 있을 만한 포스트
Next.js 블로그 만들기 — giscus로 댓글 기능 추가
서버 없이 GitHub Discussions 기반 댓글 시스템 giscus를 Next.js 블로그에 연동하기. 다크모드 자동 전환까지.
AI 코딩의 맹점 — Artifacts 없이 에이전트는 기억을 잃는다
PRD, ADR, TDD가 AI 코딩 워크플로우에서 왜 선택이 아닌 필수인지, 실전 구조와 함께 살펴본다.
Next-Translate 3.0 — Turbopack과 App Router를 위한 i18n 재건
1년간 공백 후 돌아온 Next-Translate 3.0이 Turbopack 지원, 비동기 params, App Router 안정화를 한 번에 처리하는 방법.
V8 WasmGC 투기적 최적화 — 가상 메서드를 인라인으로 만드는 법
V8이 WasmGC의 가상 메서드 디스패치에 투기적 인라이닝을 도입해 Dart와 Java 앱에서 최대 8% 성능을 끌어낸 방법.
Vinext — Vite 위에서 Next.js를 1주일 만에 다시 만든 이야기
Cloudflare가 AI와 함께 단 일주일, $1,100의 API 비용으로 Next.js 호환 프레임워크를 Vite 위에 구축한 과정.
Tsonic — TypeScript를 네이티브 바이너리로 컴파일하는 실험
TypeScript → C# → NativeAOT 파이프라인으로 네이티브 실행 파일을 만드는 Tsonic. 어떻게 동작하고, 어떤 한계가 있는지 살펴봤다.
VS Code 팀의 AI 에이전트 병렬화 — 월간 릴리스를 주간으로 만든 워크플로우
VS Code 팀이 월간 릴리스에서 주간 릴리스로 전환한 비결. 에이전트 세션 병렬화, 자동화 파이프라인, 품질 게이트 설계 전반을 공개했다.
React Compiler의 한계 — 뭘 최적화하고 뭘 못 하는가
React Compiler가 자동 메모이제이션으로 해결하는 것과 해결하지 못하는 것. 컴파일러 기반 UI 프레임워크의 능력 경계를 정리했다.