이번에 MMORPG 인 게임하나를 출시마무리 하면서 정말 많은 일들이 있었다. 사실 매우 보편적인 수준의 이슈인데 뭐 주로 버그 트래킹 대응. 클라팀이 고생이 많았다. 오래 전에 합류 해서 구축 했었다면 좋았을것을 이라는 생각이 주를 이룬다.
빠른 개발 이터레이션 환경이 완성되야 빠른 버그 트래킹이 이루어 지고 즉각 대응과 사전 파악이나 근본적으로 코드 구조가 바뀔때 마다 다시 발생하는 코더의 휴먼 애러 등등등을 방어할 수 있었을 것. 큰 회사는 인프라팀 등이 있을 수 있으니 그래도 조금은 잘 되어 있겠지만 인프라팀이 없더라고 개발팀에서는 꼭 빠른 이터레이션 환경을 만들어야 한다. 가끔 보면 자동빌드만 만들고 됬다고 생각하는 개발자도 많다. 자동빌드는 젠킨스나 팀시티로 이틀이면 구축한다. 빠른 개발 이터레이션 환경이란 빌드가 끝나고 나서 돌려보고 QA 까지 한 사이클을 돌고 난 후에 문제를 파악하는 것이 아니다.
🎯 프로젝트 목표
TeamCity CI/CD 고도화를 통한 자동화된 릴리스 노트 생성
핵심 워크플로우
- TeamCity 빌드 완료 감지
- 빌드 리비전 정보 및 SVN 커밋 분석
- JIRA 티켓 정보와 교차 비교
- 코드 변경사항 분석
- AI 기반 릴리스 노트 생성
- 크리에이티브 디렉터에게 자동 이메일 발송
🏗️ 시스템 아키텍처
전체 플로우 다이어그램
TeamCity Build → n8n Webhook → SVN Analysis → JIRA API
↓ ↓ ↓ ↓
Build Info → Process Data → Code Diff → Task Info
↓ ↓ ↓ ↓
Claude AI ← Compile Data ← Format Data ← Merge Data
↓
Release Notes → Email Service → Creative Director
🔧 구현 방안
방안 1: Claude Code 기반 워크플로우 생성
장점:
- VS Code 환경에서 직접 워크플로우 개발
- 실시간 코드 분석 및 최적화
- 디버깅 용이성
구현 단계:
- n8n 워크플로우 JSON 생성
- Claude Code를 활용한 노드 최적화
- HTTP Request 노드 설정 자동 생성
- JavaScript 코드 노드 로직 개발
- 에러 핸들링 로직 구현
- 테스트 시나리오 생성
- // 테스트 데이터 생성 요청 "TeamCity 빌드 완료 웹훅 데이터 샘플을 만들어줘"
방안 2: Claude Desktop 기반 대화형 개발
장점:
- 자연어 기반 요구사항 정의
- 복잡한 로직 설명 및 문서화
- 프로젝트별 컨텍스트 관리
구현 단계:
- 프로젝트 컨텍스트 설정
- TeamCity API 문서 업로드
- JIRA REST API 문서 추가
- SVN 명령어 레퍼런스 포함
- 기존 릴리스 노트 템플릿 업로드
- 대화형 워크플로우 설계
- 사용자: "TeamCity에서 빌드가 완료되면 자동으로 릴리스 노트를 생성하는 워크플로우를 설계해줘" Claude: "다음과 같은 단계로 워크플로우를 구성하겠습니다: 1. TeamCity 웹훅 수신 2. 빌드 정보 파싱 3. SVN 로그 조회 ..."
- 점진적 개선
- 초기 버전 배포 후 피드백 수집
- Claude Desktop과 대화를 통한 개선사항 도출
- 버전별 변경사항 추적
📋 세부 구현 계획
Phase 1: 기본 연동 구축
1.1 TeamCity 웹훅 설정
{
"webhookUrl": "<http://your-n8n-instance:5678/webhook/teamcity>",
"events": ["buildFinished"],
"payloadFormat": "json",
"headers": {
"Authorization": "Bearer ${TEAMCITY_TOKEN}"
}
}
1.2 n8n 웹훅 노드 구성
- HTTP Webhook 트리거
- 빌드 상태 필터링 (성공한 빌드만)
- 빌드 정보 추출 및 변수 저장
Phase 2: JIRA 연동 및 분석
2.1 JIRA API 연동
// 커밋 메시지에서 JIRA 티켓 번호 추출
const jiraPattern = /([A-Z]+-\\d+)/g;
const tickets = commitMessage.match(jiraPattern);
// JIRA API 호출
for (const ticket of tickets) {
const response = await fetch(
`${jiraUrl}/rest/api/2/issue/${ticket}`,
{ headers: { 'Authorization': `Bearer ${jiraToken}` } }
);
}
2.2 코드 변경사항 분석
# 변경된 파일 목록 및 diff 생성
svn diff -r ${prevRevision}:${currentRevision} > changes.diff
2.3 데이터 병합 및 정리
// 수집된 정보를 릴리스 노트 형태로 구조화
const releaseData = {
buildInfo: { /* TeamCity 빌드 정보 */ },
jiraTickets: [ /* JIRA 티켓 정보 배열 */ ],
codeChanges: [ /* 변경된 파일 목록 */ ],
commitMessages: [ /* 커밋 메시지 목록 */ ]
};
Phase 3: AI 기반 릴리스 노트 생성
3.1 Claude API 연동
// n8n HTTP Request 노드에서 Claude API 호출
const prompt = `
다음 정보를 바탕으로 크리에이티브 디렉터를 위한
릴리스 노트를 한국어로 작성해주세요:
빌드 정보: ${JSON.stringify(buildInfo)}
JIRA 티켓: ${JSON.stringify(jiraTickets)}
코드 변경사항: ${JSON.stringify(codeChanges)}
형식:
- 주요 변경사항 요약
- 기능별 상세 내용
- 테스트 권장사항
- 배포시 주의사항
`;
3.2 릴리스 노트 템플릿
# 🚀 릴리스 노트 - 빌드 #${buildNumber}
**배포 일시:** ${deploymentDate}
**빌드 리비전:** ${svnRevision}
**담당 개발자:** ${developers}
## 📋 주요 변경사항
${mainChanges}
## 🔧 기능별 상세 내용
${detailedChanges}
## ✅ 테스트 권장사항
${testRecommendations}
## ⚠️ 배포시 주의사항
${deploymentWarnings}
## 📊 관련 JIRA 티켓
${relatedTickets}
Phase 4: 이메일 발송 시스템
4.1 이메일 템플릿 생성
- HTML 형식의 이메일 템플릿
- 반응형 디자인 적용
- 브랜드 가이드라인 준수
4.2 발송 대상 관리
// 수신자 목록 관리
const recipients = {
primary: ['[creative.director@company.com](<mailto:creative.director@company.com>)'],
cc: ['[dev.lead@company.com](<mailto:dev.lead@company.com>)', '[qa.lead@company.com](<mailto:qa.lead@company.com>)'],
bcc: ['[archive@company.com](<mailto:archive@company.com>)']
};
🔍 고급 기능 확장 방안
확장 방안 1: 다중 프로젝트 지원
- 프로젝트별 설정 관리
- 템플릿 커스터마이징
- 발송 대상 그룹 관리
확장 방안 2: 성능 모니터링
// 워크플로우 실행 시간 추적
const startTime = [Date.now](<http://Date.now>)();
// ... 워크플로우 실행 ...
const executionTime = [Date.now](<http://Date.now>)() - startTime;
// 성능 데이터 수집
const performanceData = {
executionTime,
apiCalls: apiCallCount,
dataSize: JSON.stringify(releaseData).length
};
확장 방안 3: 장애 복구 및 알림
- 실패한 워크플로우 재시도 로직
- 관리자 알림 시스템
- 로그 수집 및 분석
📈 성공 지표
KPI 정의
- 자동화율: 수동 릴리스 노트 작성 대비 자동화 비율
- 정확도: 생성된 릴리스 노트의 정보 정확성
- 시간 단축: 릴리스 노트 작성 시간 단축률
- 만족도: 크리에이티브 디렉터 피드백 점수
측정 방법
// 성과 추적 데이터 수집
const metrics = {
automationRate: (automatedReleases / totalReleases) * 100,
timeSaved: manualTime - automatedTime,
accuracyScore: feedbackRating,
userSatisfaction: surveyResults
};
🛠️ 개발 및 운영 가이드라인
코드 품질 관리
- Claude Code를 활용한 코드 리뷰
- 자동화된 테스트 케이스 생성
- 문서화 자동 업데이트
보안 고려사항
- API 키 환경변수 관리
- 웹훅 인증 토큰 검증
- 민감 정보 마스킹
백업 및 복구
- n8n 워크플로우 정기 백업
- 설정 파일 버전 관리
- 장애 복구 절차 문서화
Claude Desktop의 프로젝트 기능을 활용하여 각 단계별 구현 내용과 피드백을 체계적으로 관리하면 더욱 효율적인 개발이 가능합니다.
📚 참고 자료
'TECH.ART.FLOW.IO' 카테고리의 다른 글
소프트웨어 개발 측면에서 “꼭 일어날 일은 반드시 일어난다”는 개념 (0) | 2025.09.17 |
---|---|
[번역]UE Plugin and Tool Development: Commandlet (0) | 2025.09.15 |
Blender 애드온 개발 학습 순서 (0) | 2025.09.08 |
[번역] The application and development of toon shading technology in mobile games (3) | 2025.08.30 |
[번역] 버젯,언리얼 엔진 게임 최적화 (8) | 2025.08.08 |