template-common/.claude/skills/release/SKILL.md

3.5 KiB

name description user-invocable argument-hint allowed-tools
release develop에서 main으로 릴리즈 MR을 생성합니다 true Bash, Read, Grep

develop 브랜치와 원격 동기화를 확인하고, develop → main 릴리즈 MR을 생성합니다.

수행 단계

1. 사전 검증

# Gitea remote URL에서 owner/repo 추출
REMOTE_URL=$(git remote get-url origin)

# GITEA_TOKEN 확인
echo $GITEA_TOKEN
  • GITEA_TOKEN 환경변수 확인 (없으면 설정 안내 후 종료)
  • 커밋되지 않은 변경 사항이 있으면 경고 ("먼저 /push로 커밋하세요")

2. develop 브랜치 동기화 확인

# 최신 원격 상태 가져오기
git fetch origin

# 로컬 develop과 origin/develop 비교
LOCAL=$(git rev-parse develop 2>/dev/null)
REMOTE=$(git rev-parse origin/develop 2>/dev/null)
BASE=$(git merge-base develop origin/develop 2>/dev/null)

동기화 상태 판단:

상태 조건 행동
동일 LOCAL == REMOTE 바로 MR 생성 진행
로컬 뒤처짐 LOCAL == BASE, LOCAL != REMOTE "origin/develop에 새 커밋이 있습니다. git pull origin develop 후 다시 시도하세요" 안내
로컬 앞섬 REMOTE == BASE, LOCAL != REMOTE "로컬에 push되지 않은 커밋이 있습니다. git push origin develop 먼저 실행하시겠습니까?" 확인
분기됨 그 외 "로컬과 원격 develop이 분기되었습니다. 수동으로 해결해주세요" 경고 후 종료

로컬 앞섬 상태에서 사용자가 push 수락하면:

git push origin develop

3. develop → main 차이 분석

# main 대비 develop의 새 커밋
git log main..origin/develop --oneline

# 변경 파일 통계
git diff main..origin/develop --stat

# 커밋 수
git rev-list --count main..origin/develop

차이가 없으면 "develop과 main이 동일합니다. 릴리즈할 변경이 없습니다" 출력 후 종료.

4. MR 정보 구성 + 사용자 확인

제목 자동 생성:

release: YYYY-MM-DD (N건 커밋)

본문 자동 생성:

## 릴리즈 내용
- (develop→main 커밋 목록, Conventional Commits type별 그룹핑)

### 새 기능 (feat)
- feat(auth): 로그인 검증 로직 추가
- feat(batch): 배치 스케줄러 개선

### 버그 수정 (fix)
- fix(api): 타임아웃 처리 수정

### 기타
- chore: 의존성 업데이트

## 변경 파일
- N files changed, +M insertions, -K deletions

## 테스트
- [ ] develop 브랜치 빌드 성공 확인
- [ ] 주요 기능 동작 확인

사용자 확인 (AskUserQuestion):

  • 질문: "다음 내용으로 릴리즈 MR을 생성하시겠습니까?"
  • 옵션 1: 생성 (추천)
  • 옵션 2: 제목/본문 수정 (Other 입력)
  • 옵션 3: 취소

5. Gitea API로 릴리즈 MR 생성

curl -X POST "https://{host}/api/v1/repos/{owner}/{repo}/pulls" \
  -H "Authorization: token ${GITEA_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "release: 2026-02-19 (12건 커밋)",
    "body": "릴리즈 본문",
    "head": "develop",
    "base": "main",
    "labels": []
  }'

6. 결과 출력

✅ 릴리즈 MR 생성 완료
  브랜치: develop → main
  MR: https://gitea.gc-si.dev/gc/my-project/pulls/50
  커밋: 12건, 파일: 28개 변경

  다음 단계:
  1. 리뷰어 지정 (main 브랜치는 1명 이상 리뷰 필수)
  2. 승인 후 머지
  3. CI/CD 자동 배포 확인 (설정된 경우)

필요 환경변수

  • GITEA_TOKEN: Gitea API 접근 토큰