Claude Code를 Git 워크플로우에 통합하고, CI/CD 파이프라인에서 자동화된 코드 리뷰와 수정을 구성하는 방법을 다룹니다.
Claude Code는 Git과 깊이 통합되어 있습니다. 프로젝트 디렉토리에서 세션을 시작하면 자동으로 Git 상태를 파악하고, 브랜치, 커밋 히스토리, 변경 사항을 컨텍스트로 활용합니다. 이 장에서는 이러한 통합을 실무 워크플로우에 적용하는 방법을 다룹니다.
이슈 번호를 기반으로 브랜치를 생성하고 작업을 시작하는 흐름입니다.
GitHub 이슈 #42를 확인하고,
적절한 브랜치명으로 새 브랜치를 만들어서
이슈의 요구사항을 구현해 줘.
Claude Code는 이슈 내용을 분석하여 feat/42-user-notification과 같은 브랜치를 생성하고, 이슈의 요구사항을 기반으로 코드를 작성합니다.
Claude Code에 커밋 단위와 메시지 형식을 지정할 수 있습니다.
작업이 완료되면 논리적 단위로 커밋을 분리해 줘.
각 커밋은 하나의 변경 목적만 포함해야 해.
커밋 메시지는 Conventional Commits 형식, 한글로 작성해 줘.
비대화형 모드에서 자동 커밋도 가능합니다.
git diff --staged | claude -p "이 변경사항에 적합한 Conventional Commits 형식의 한글 커밋 메시지를 제안해 줘. 메시지만 출력해 줘."현재 브랜치의 변경사항으로 PR을 생성해 줘.
- main 브랜치 대상
- 제목은 변경 내용을 요약
- 본문에는 변경 이유, 주요 변경사항, 테스트 방법을 포함
- 관련 이슈가 있으면 링크
팀원의 PR을 리뷰하는 워크플로우입니다.
PR #15의 변경사항을 리뷰해 줘.
다음 체크리스트를 기준으로 검토해 줘:
- 타입 안전성
- 에러 처리
- 성능 영향
- 테스트 충분성
- 코딩 컨벤션 준수
리뷰어의 코멘트를 자동으로 반영하는 것도 가능합니다.
PR #15에 달린 리뷰 코멘트를 확인하고
각 피드백을 반영해 줘.
수정 후 리뷰어에게 응답 코멘트도 남겨 줘.
Claude Code를 CI/CD 파이프라인에 통합하면, 자동화된 코드 리뷰, 테스트 실패 수정, PR 자동 생성 등이 가능합니다.
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
DIFF=$(git diff origin/main...HEAD)
echo "$DIFF" | claude -p "이 PR의 변경사항을 리뷰해 줘.
버그, 보안 취약점, 성능 문제를 중심으로 검토하고,
마크다운 형식으로 리뷰 결과를 출력해 줘." > review.md
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = fs.readFileSync('review.md', 'utf8');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: review
});CI가 실패했을 때 Claude Code가 자동으로 수정을 시도하는 워크플로우입니다.
name: Claude Auto Fix
on:
workflow_run:
workflows: ["CI"]
types: [completed]
jobs:
fix:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_branch }}
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Dependencies
run: npm ci
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Fetch CI Logs and Fix
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# 실패 로그 수집
gh run view ${{ github.event.workflow_run.id }} \
--log-failed > ci-failure.log 2>/dev/null
# Claude Code로 수정
claude -p "ci-failure.log 파일의 CI 실패 로그를 분석하고,
원인을 찾아 수정해 줘. 수정 후 빌드가 성공하는지 확인해 줘."
- name: Commit and Push Fix
run: |
git config user.name "Claude Code Bot"
git config user.email "claude-bot@example.com"
git add -A
git diff --staged --quiet || \
git commit -m "fix: CI 실패 자동 수정" && \
git pushCI/CD에서 Claude Code를 실행할 때는 API 키를 GitHub Secrets에 안전하게 저장합니다. 워크플로우 파일에 키를 직접 작성하지 않습니다. 또한 Claude Code가 수정한 코드는 반드시 빌드와 테스트를 통과한 후에만 병합되도록 보호 규칙을 설정합니다.
Claude Code의 클라우드 스케줄 기능을 활용하면, 정기적인 작업을 자동화할 수 있습니다.
Claude Code 세션 내에서 /schedule 명령어로 스케줄 작업을 생성합니다.
/schedule또는 웹 인터페이스와 데스크톱 앱에서도 스케줄을 설정할 수 있습니다.
일일 의존성 검사: 매일 오전에 npm audit를 실행하고, 취약점이 발견되면 자동으로 이슈를 생성합니다.
주간 코드 품질 리포트: 매주 월요일에 코드 복잡도, 테스트 커버리지, 린트 경고 등을 분석하여 리포트를 작성합니다.
릴리스 노트 자동 생성: 매주 금요일에 한 주간의 커밋을 분석하여 릴리스 노트를 작성합니다.
클라우드 스케줄 작업은 Anthropic의 관리형 인프라에서 실행되므로, 로컬 컴퓨터가 꺼져 있어도 동작합니다. Claude Max 구독이 필요합니다.
자주 사용하는 Git 작업을 스킬로 정의하면 더 효율적입니다.
---
name: prepare-pr
description: "현재 브랜치의 변경사항으로 PR을 준비합니다"
user-invocable: true
---
# PR 준비 스킬
## 절차
1. `git status`로 커밋되지 않은 변경사항이 있는지 확인한다
- 있으면 사용자에게 커밋 여부를 확인한다
2. `git log main..HEAD --oneline`으로 커밋 목록을 확인한다
3. `git diff main...HEAD`로 전체 변경사항을 분석한다
4. PR 제목과 본문을 작성한다:
- 제목: 70자 이내, 변경 핵심 요약
- 본문 구조:
## 변경 사항
## 변경 이유
## 테스트 방법
## 스크린샷 (UI 변경 시)
5. 린트와 빌드를 실행하여 문제가 없는지 확인한다
6. PR을 생성한다---
name: release
description: "새 버전을 릴리스합니다"
user-invocable: true
context: "git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~20)..HEAD --oneline"
---
# 릴리스 스킬
context에서 마지막 태그 이후의 커밋 목록이 주입됩니다.
## 절차
1. 커밋 목록을 분석하여 시맨틱 버전을 결정한다
- feat 커밋이 있으면 minor
- fix만 있으면 patch
- BREAKING CHANGE가 있으면 major
2. CHANGELOG.md를 업데이트한다
3. package.json의 버전을 업데이트한다
4. 변경사항을 커밋한다: "chore: v{버전} 릴리스"
5. Git 태그를 생성한다: v{버전}
6. 사용자에게 push 여부를 확인한다실험적인 작업이나 대규모 변경을 시도할 때 Git worktree를 활용하면 메인 작업 디렉토리에 영향을 주지 않고 작업할 수 있습니다.
# 워크트리 생성
git worktree add /tmp/experiment -b feature/experiment
# 워크트리에서 Claude Code 실행
cd /tmp/experiment
claude이 워크트리에서 React Query를 TanStack Query v5로
마이그레이션해 줘. 빌드가 통과하는지 확인해 줘.
마이그레이션이 성공하면 메인 리포지토리에서 브랜치를 병합합니다.
# 메인 리포지토리로 돌아가서
cd ~/my-project
git merge feature/experiment
# 워크트리 정리
git worktree remove /tmp/experimentCI/CD에서 Claude Code를 사용할 때 반드시 고려해야 할 사항입니다.
인증 보안:
변경 범위 제한:
비용 관리:
실패 대응:
Claude Code와 Git/CI/CD의 통합은 개발 워크플로우의 자동화를 크게 확장합니다.
다음 장에서는 지금까지 배운 모든 기능을 종합하여 실전 프로젝트를 처음부터 끝까지 Claude Code로 개발하는 과정을 다룹니다.
이 글이 도움이 되셨나요?
REST API 서버 프로젝트를 Claude Code만으로 처음부터 끝까지 개발하며, 앞서 배운 모든 기능을 실전에 적용합니다.
Claude Code의 서브에이전트와 에이전트 팀 기능을 이해하고, 복잡한 작업을 병렬로 분할 처리하는 방법을 다룹니다.
Model Context Protocol의 개념을 이해하고, Claude Code에 MCP 서버를 연결하여 데이터베이스, API, 외부 서비스를 통합하는 방법을 다룹니다.