GitHub Actions 통합
Claude Code를 GitHub Actions 워크플로우에 통합하여 CI/CD 파이프라인을 AI로 강화할 수 있습니다. 코드 리뷰, 문서 생성, 테스트 자동화 등 다양한 작업을 자동화할 수 있습니다.
기본 설정
먼저 GitHub 리포지토리에 Claude Code API 키를 시크릿으로 추가해야 합니다.
- GitHub 리포지토리의 Settings → Secrets and variables → Actions로 이동
- "New repository secret" 클릭
- Name:
ANTHROPIC_API_KEY - Value: 실제 API 키 입력
- "Add secret" 클릭
자동 코드 리뷰
Pull Request가 생성되면 자동으로 코드 리뷰를 수행하는 워크플로우입니다.
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run Claude Code Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"PR의 변경사항을 리뷰하고 개선사항을 제안해줘" \
--allowedTools Read Grep "Bash(git diff:*)"
- name: Comment PR
uses: actions/github-script@v6
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '### 🤖 AI Code Review 완료\n리뷰 결과가 위에 표시됩니다.'
})
테스트 자동 수정
테스트가 실패하면 Claude Code가 자동으로 수정을 시도하는 워크플로우입니다.
name: Auto Fix Tests
on:
push:
branches: [main, develop]
jobs:
test-and-fix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup environment
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Run tests
id: test
continue-on-error: true
run: npm test
- name: Fix failing tests
if: steps.test.outcome == 'failure'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"테스트를 실행하고 실패한 테스트를 수정해줘" \
--allowedTools Read Write "Bash(npm test:*)"
- name: Commit fixes
if: steps.test.outcome == 'failure'
run: |
git config --local user.email "claude-bot@example.com"
git config --local user.name "Claude Bot"
git add .
git commit -m "fix: Auto-fix failing tests 🤖"
git push
문서 자동 생성
코드 변경사항을 기반으로 문서를 자동으로 업데이트하는 워크플로우입니다.
name: Update Documentation
on:
push:
branches: [main]
paths:
- 'src/**'
- 'lib/**'
jobs:
update-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Generate API documentation
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"API 문서를 최신 코드 변경사항에 맞게 업데이트해줘" \
--allowedTools Read Write Grep
- name: Update README
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"README의 사용 예제를 최신 API에 맞게 업데이트해줘" \
--allowedTools Read Write
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
commit-message: 'docs: Update documentation 📚'
title: 'Update Documentation'
body: 'Automated documentation update based on recent code changes.'
branch: 'update-docs'
릴리스 노트 생성
새 버전을 릴리스할 때 자동으로 릴리스 노트를 생성합니다.
name: Generate Release Notes
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Generate release notes
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"이전 태그 이후의 커밋을 분석하고 릴리스 노트를 생성해줘" \
--allowedTools "Bash(git log:*)" "Bash(git diff:*)" Write \
> release_notes.md
- name: Create Release
uses: softprops/action-gh-release@v1
with:
body_path: release_notes.md
draft: false
prerelease: false
보안 스캔 및 수정
보안 취약점을 스캔하고 자동으로 수정하는 워크플로우입니다.
name: Security Scan and Fix
on:
schedule:
- cron: '0 0 * * 1' # 매주 월요일
workflow_dispatch:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run security audit
run: npm audit --json > audit.json
- name: Fix vulnerabilities
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"npm audit 결과를 분석하고 보안 취약점을 수정해줘" \
--allowedTools Read Write "Bash(npm:*)"
- name: Create fix PR
uses: peter-evans/create-pull-request@v5
with:
title: 'Security: Fix vulnerabilities 🔒'
body: 'Automated security vulnerability fixes'
branch: 'security-fixes'
워크플로우 모범 사례
💡 GitHub Actions 통합 팁
- 도구 제한: 필요한 도구만 허용하여 보안 강화
- 타임아웃 설정: 긴 작업에는 적절한 타임아웃 설정
- 비용 관리: API 호출 횟수 모니터링
- 캐싱 활용: 의존성 캐싱으로 실행 시간 단축
- 병렬 실행: 독립적인 작업은 병렬로 실행
복합 워크플로우 예제
name: Complete CI/CD Pipeline
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Code quality check
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code -p \
"코드 품질을 분석하고 개선사항을 제안해줘" \
--allowedTools Read Grep
test:
needs: analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm test
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Deploy to production
run: echo "Deploying..."