티스토리 뷰

반응형

GitHub App 기반 고급 자동화 기능 개발: AI 응답, 이슈 분류, 멀티 리포지토리 연동

이전 글에서는 Webhook 서버를 GitHub App으로 전환하는 과정과, 인증 및 API 호출 방식에 대해 다뤘습니다.
이번 글에서는 GitHub App의 고급 기능을 활용해 AI 연동, 이슈 자동 분류, 멀티 리포지토리 자동화를 구현하는 실제 사례 중심으로 살펴봅니다.
이제 GitHub App은 단순한 자동화 도구가 아니라, 지능형 협업 에이전트로 진화합니다.


1. AI와 GitHub App을 연결하는 이유

AI가 GitHub 협업에 유용한 이유

  • 이슈 내용 요약
  • PR 설명 자동 생성
  • 태그 및 라벨 추천
  • 중복 이슈 탐지
  • 코드 변경 사항 설명

💡 AI는 단순 자동화를 넘어서, 협업의 질을 높이는 역할을 합니다.


2. 기능 1: 이슈 자동 분류 및 라벨 추천 (with GPT)

반응형

🔹 GitHub App의 issues 이벤트 활용

📌 Webhook Payload 예시 (이슈 생성 시)

{
  "action": "opened",
  "issue": {
    "title": "로그인 실패 시 에러 메시지가 없음",
    "body": "사용자가 잘못된 비밀번호를 입력해도 에러 메시지가 출력되지 않습니다."
  }
}

🔹 GPT API 연동을 통한 라벨 추천 예시

📌 AI 요청 및 응답

const issueText = `${title}\n\n${body}`;
const prompt = `다음 이슈에 적절한 라벨을 추천해줘: \n${issueText}`;

const response = await openai.chat.completions.create({
  messages: [{ role: 'user', content: prompt }],
  model: 'gpt-4',
});
const recommendedLabel = response.choices[0].message.content.trim();

🔹 GitHub API를 통해 라벨 적용

await axios.post(
  `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}/labels`,
  { labels: [recommendedLabel] },
  { headers: { Authorization: `token ${accessToken}` } }
);

🧠 이슈 작성만 해도 GPT가 읽고 적절한 라벨을 자동으로 달아주는 스마트한 협업 경험!


3. 기능 2: PR 설명 자동 생성 및 리뷰어 추천

🔹 PR 생성 시 Webhook 이벤트 수신 (pull_request + opened)

const prTitle = payload.pull_request.title;
const prDiffUrl = payload.pull_request.diff_url;

const prompt = `다음 PR의 제목은 "${prTitle}"입니다.\n변경된 코드(diff)를 읽고 핵심 변경 요약 및 코드 리뷰어 후보를 추천해주세요.`;

📌 GPT 응답 예시

[PR 요약]
- 로그인 실패 시 사용자에게 명확한 에러 메시지를 반환하도록 수정
- 백엔드 API 응답 구조 통일

[리뷰어 추천]
- backend-lead
- ux-reviewer

🔹 GitHub API로 PR에 코멘트 및 리뷰어 자동 지정

// 코멘트 추가
await axios.post(
  `https://api.github.com/repos/${owner}/${repo}/issues/${prNumber}/comments`,
  { body: gptSummary },
  { headers: { Authorization: `token ${accessToken}` } }
);

// 리뷰어 지정
await axios.post(
  `https://api.github.com/repos/${owner}/${repo}/pulls/${prNumber}/requested_reviewers`,
  { reviewers: ['backend-lead', 'ux-reviewer'] },
  { headers: { Authorization: `token ${accessToken}` } }
);

✨ GPT가 코드를 요약하고, 리뷰까지 도와주는 협업 도우미로 작동합니다.


4. 기능 3: 멀티 리포지토리 자동화 구조 설계

GitHub App은 조직 단위로 설치하면 모든 리포지토리에 이벤트를 수신할 수 있습니다.
이를 통해 하나의 Webhook 서버에서 여러 리포지토리를 동시에 자동화할 수 있습니다.

📌 예시 구조

/github/webhook
  ├── repo-a (PR 이벤트 처리)
  ├── repo-b (이슈 자동 라벨링)
  ├── repo-c (Project 보드 자동화)

🔹 리포지토리 식별 정보 활용

const { repository } = payload;
const repoName = repository.name;
const owner = repository.owner.login;

if (repoName === 'frontend-app') {
  // 프론트 전용 PR 룰 적용
} else if (repoName === 'backend-api') {
  // 백엔드 이슈에 라벨 자동 추천
}

✅ 하나의 서버에서 다양한 GitHub 리포지토리를 처리할 수 있어 유지보수가 쉬워집니다.


5. 확장 팁: GitHub Project, Actions, Slack 연동까지 함께!

기능 활용 방식

GitHub Project 보드 이동 PR Merge → Done 칼럼 이동
Slack 알림 PR 리뷰 요청 → 실시간 Slack 전송
GitHub Actions + App 테스트 완료 후 App 서버에 상태 전송
GPT 기반 이슈 요약 매일 생성된 이슈 요약 → Slack 메시지 전송

6. 실전 적용 예시 정리

기능 기술 요소 설명

이슈 자동 분류 GPT-4 + GitHub App 이슈 생성 → AI가 라벨 추천 → 자동 지정
PR 리뷰 보조 GPT-4 + Webhook PR 코드 요약 + 리뷰어 지정
다중 리포 관리 GitHub App 설치 + 중앙 Webhook 서버 조직 전체 리포지토리 이벤트 처리
협업 알림 Slack + Webhook 주요 이벤트 실시간 알림

7. 마무리 및 다음 글 예고

이번 글에서는 GitHub App을 활용한 고급 자동화 기능 (AI 연동, 멀티리포 처리 등) 을 살펴봤습니다.
단순한 자동화를 넘어, 개발 문화를 개선하는 지능형 시스템 구축의 가능성을 열 수 있습니다.

다음 글에서는 GitHub App을 완전한 SaaS 형태로 배포하는 방법 (사용자 설치, 설정 UI, 인증 연동 등) 을 다룰 예정입니다.
→ GitHub App을 서비스로 만드는 과정 (Marketplace 출신 App 구축)


 

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함
반응형