GitLab MR 자동화
회사에서 gitlab MR 자동화하는 방법을 공유하고자 합니다.
현재 우리팀에서는 MR을 이용하여 소스 변경사항들을 기록하고 있습니다. AI를 이용하여 어떻게 자동화나가고 있는지 공유하고자 합니다.
저희팀은 아래와 같이 MR 양식을 만들어 사용하고 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 작업명
결제 실패 시 재시도가 안 되는 버그 수정
## 변경 요약
- 실패 시 즉시 종료 → 최대 3회 재시도 후 실패 처리 로직으로 변경
## 영향 범위 ⚠️
- 결제 로직의 실패 부분 (OrderServiceImpl A메서드)
- 주문 상태 변경 로직
## 리뷰어가 꼭 봐야 할 부분 👀 (선택)
- PaymentRetryHandler.java 45-47 라인: 재시도 로직
- 레거시 호환을 위해 A방법 대신 B방법 사용
## 특이사항 (선택)
- 공통코드 ORD032에 88 추가
## 상세 설명 (파일 10개 이상 또는 ±400라인 이상 변경 시)
- 로직 설명 또는 관련 문서 링크
- 플로우차트나 다이어그램 링크
문제점
개발자가 MR 양식 작성을 위해 시간 비용이 나간다는 문제점이 있습니다.
자동화 과정
1. Claude Code로 자동화 하기
이러한 문제점을 해결하기 위해 Claud Code CLI를 사용하여 자동화 하기로 하였습니다. CLI이점은 @명령어를 통해 특정 파일을 지정할 수 있습니다. 위에 MR 양식을 프로젝트에 md파일로 만들어 자동화 하였습니다.
해당 명령어를 사용하면 아래와 같이 md파일이 생성되면서 양식에 맞게 잘 생성되는거 확인 할 수 있었습니다.
문제점
해당 양식으로도 잘 사용하고 있었지만 개발자가 명령어를 매번 쳐야하고 gitlab에 MR를 자동으로 만들어주지 않기 때문에 gitlab 프로젝트에 들어가 New Merge Request 버튼을 클릭하여 Source branch와 Target branch를 선택해야하는 문제점이 있었습니다.
이는 AI를 절반만 사용하고 있다고 생각하여 이를 해결하기 위해 Slash Commands를 사용하기로 하였습니다.
🤔 왜 jetbrain에 제공하는 gitlab 플러그인 사용하지 않고 직접들어가서 하나요?
회사에서 사용하는 gitlab 버전이 낮아 jetbrain에 gitlab플러그인을 사용하여 MR를 사용할 수 없는 슬픈 사연이 있습니다 🥲
2. Slash Commands 사용하기
Claude Code에서 제공하는 Slash Commands로 개발자가 커스텀해서 사용할 수 있는걸 확인하였습니다.
commands디렉토리를 생성하여 원하는 명령어 md파일을 생성할 수 있습니다.
1
2
mkdir -p ~/.claude/commands
vi ~/.claude/commands/create-mr.md
md파일에는 아래와 같이 MR 생성 시나리오는 작성하였습니다.
- 현재 브랜치에 나의 변경사항 확인
- MR 양식 지정
- MR 생성 URL과 변경사항 Markdown 형태로 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
---
description: 커밋 없이 Merge Request 생성
allowed-tools: Bash(git *), Bash(gh *), Bash(brew install gh)
argument-hint: [MR-title]
---
# Merge Request 생성 (커밋 없음)
현재 변경사항으로 Merge Request를 생성합니다. 추가 커밋은 하지 않습니다.
## 작업 흐름
### 1. 커밋 이력 확인
다음 순서로 브랜치 상태를 확인하고 처리합니다:
1. 현재 브랜치에서 'treestone'가 커밋한 내용을 확인
2. 변경 사항을 확인하고 MR 생성 준비
### 3. MR 생성
- **중요**: `git add` 또는 `git commit`을 절대 실행하지 마세요.
- 다음 양식으로 MR 내용을 작성합니다:
## 작업명
결제 실패 시 재시도가 안 되는 버그 수정
## 변경 요약
- 실패 시 즉시 종료 → 최대 3회 재시도 후 실패 처리 로직으로 변경
## 영향 범위 ⚠️
- 결제 로직의 실패 부분 (OrderServiceImpl A메서드)
- 주문 상태 변경 로직
## 리뷰어가 꼭 봐야 할 부분 👀 (선택)
- PaymentRetryHandler.java 45-47 라인: 재시도 로직
- 레거시 호환을 위해 A방법 대신 B방법 사용
## 특이사항 (선택)
- 공통코드 ORD032에 88 추가
## 상세 설명 (파일 10개 이상 또는 ±400라인 이상 변경 시)
- 로직 설명 또는 관련 문서 링크
- 플로우차트나 다이어그램 링크
### 4. MR 완료 작업
- 대상 브랜치는 항상 `servicedev`
- MR 페이지를 브라우저에서 열기
생성 URL 예시:
http://회사git도메인/api0/noti/merge_requests/new?merge_request%5Bsource_branch%5D=feat/test123&merge_request%5Btarget_branch%5D=servicedev
- MR 제목 및 내용을 줄때에는 markdown으로 복사하기 편하게 리턴
작성이후 claud code cli를 실행하면 생성한 명령어를 확인이 가능합니다.
명령어 실행이후 원하는 시나리오대로 리턴되고 있는걸 확인하였습니다.
마치며
AI 시대에서 업무 자동화할 수 있는 건 빠르게 적용하면서 시간 절약하는게 중요하다고 생각합니다. 팀원들에게 내용을 공유하면서 좋다는 의견도 받았고, gitlab 명령어를 사용해서 URL 생성이 아닌 Merge Request까지 자동화 할 수 있는 방법이 있지 않을까라는 피드백을 받았습니다.
추후에는 URL가 아닌 Merge Request로 자동화 할 수 있는 방법으로 개선해나갈 예정입니다.




