Skip to content

Commit 6c063ac

Browse files
committed
fix: github actions 오류 수정 중
1 parent b867089 commit 6c063ac

File tree

1 file changed

+96
-45
lines changed

1 file changed

+96
-45
lines changed

.github/workflows/gemini_review.yml

Lines changed: 96 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,110 @@ name: Gemini Automated Code Review
33
on:
44
pull_request:
55
types: [opened, reopened, synchronize]
6-
workflow_dispatch:
7-
inputs:
8-
pr_number:
9-
description: "리뷰할 PR 번호를 입력하세요 (예: 123)"
10-
required: true
11-
type: number
6+
branches:
7+
- main
8+
9+
permissions:
10+
pull-requests: write
11+
contents: read
1212

1313
jobs:
14-
gemini_code_review:
14+
code_review:
1515
runs-on: ubuntu-latest
16-
permissions:
17-
pull-requests: write
18-
contents: read
1916

2017
steps:
21-
- name: Checkout Code
18+
- name: Checkout repository
2219
uses: actions/checkout@v4
23-
with:
24-
fetch-depth: 0
2520

26-
- name: Run Gemini Reviewer (Auto)
27-
if: github.event_name == 'pull_request'
28-
uses: truongnh1992/gemini-ai-code-reviewer@v9.1.0
21+
- name: Set up Node.js
22+
uses: actions/setup-node@v4
2923
with:
30-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31-
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
32-
GEMINI_MODEL: "gemini-2.0-flash-exp"
24+
node-version: 20
25+
26+
- name: Install Google Gemini CLI
27+
run: npm install -g @google/generative-ai-cli
28+
29+
- name: Generate Git Diff for PR
30+
run: |
31+
git fetch origin "${{ github.event.pull_request.base.ref }}"
32+
git fetch origin "${{ github.event.pull_request.head.ref }}"
33+
git diff "origin/${{ github.event.pull_request.base.ref }}"..."origin/${{ github.event.pull_request.head.ref }}" > diff.txt
34+
echo "✅ Diff generated:"
35+
head -n 20 diff.txt || true
36+
37+
- name: Run Gemini Review
38+
id: gemini_review
39+
uses: actions/github-script@v7
3340
env:
34-
EXTRA_PROMPT: |
35-
당신은 시니어 프론트엔드 개발자입니다. 아래 코드 변경 사항을 면밀히 검토하고
36-
1. 잠재적인 버그나 로직 오류
37-
2. 성능 저하를 유발하는 부분
38-
3. 타입스크립트 문법 오류 및 보완점
39-
4. 한국어 주석과 변수명 스타일에 대한 지적
40-
5. 중복되는 코드 및 하드 코딩된 부분
41-
6. 최소 5개에서 10개 이하의 리뷰
42-
에 초점을 맞춰 구체적인 제안과 함께 리뷰를 작성해주세요. 리뷰는 **파일별**로 간결하고 건설적이어야 합니다.
43-
44-
- name: Run Gemini Reviewer (Manual)
45-
if: github.event_name == 'workflow_dispatch'
46-
uses: truongnh1992/gemini-ai-code-reviewer@v9.1.0
47-
with:
48-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4941
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
50-
GEMINI_MODEL: "gemini-2.0-flash-exp"
51-
env:
52-
PULL_REQUEST_NUMBER: ${{ github.event.inputs.pr_number }}
53-
EXTRA_PROMPT: |
54-
당신은 시니어 프론트엔드 개발자입니다. 아래 코드 변경 사항을 면밀히 검토하고
42+
with:
43+
script: |
44+
const fs = require("fs");
45+
const diff_output = fs.readFileSync("diff.txt", "utf8");
46+
47+
if (!diff_output.trim()) {
48+
console.log("No code changes detected, skipping review.");
49+
fs.writeFileSync("review_result.txt", "변경된 코드가 없어 리뷰를 건너뜁니다.");
50+
return;
51+
}
52+
53+
const { GoogleGenerativeAI } = require("@google/generative-ai");
54+
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
55+
const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash-exp" });
56+
57+
const prompt = `
58+
당신은 **시니어 프론트엔드 개발자**입니다.
59+
60+
다음은 Pull Request의 git diff 내용입니다.
61+
각 파일의 변경사항을 면밀히 검토하고 아래 항목 중심으로 리뷰를 작성하세요.
62+
5563
1. 잠재적인 버그나 로직 오류
56-
2. 성능 저하를 유발하는 부분
57-
3. 타입스크립트 문법 오류 및 보완점
58-
4. 한국어 주석과 변수명 스타일에 대한 지적
59-
5. 중복되는 코드 및 하드 코딩된 부분
60-
6. 최소 5개에서 10개 이하의 리뷰
61-
에 초점을 맞춰 구체적인 제안과 함께 리뷰를 작성해주세요. 리뷰는 **파일별**로 간결하고 건설적이어야 합니다.
64+
2. 성능 저하를 유발할 수 있는 부분
65+
3. 타입스크립트 문법 / 타입 오류 및 개선점
66+
4. 변수명, 함수명, 주석 스타일 관련 개선점
67+
5. 중복 코드, 하드코딩된 값, 리팩토링 포인트
68+
6. 전반적인 코드 품질 및 가독성
69+
7. 구체적이고 건설적인 개선 제안 (최소 5개 이상)
70+
71+
**출력 형식 요구사항**
72+
- 한국어로 작성
73+
- 파일별 섹션 구분 (예: ### src/components/Button.tsx)
74+
- 마크다운 형식 사용
75+
- 불필요한 서론/결론 없이 리뷰 내용만 출력
76+
77+
아래는 변경된 코드입니다:
78+
79+
<git diff>
80+
${diff_output}
81+
</git diff>
82+
`;
83+
84+
console.log("🤖 Gemini에게 코드 리뷰 요청 중...");
85+
86+
const result = await model.generateContent(prompt);
87+
const text = result.response.text();
88+
89+
fs.writeFileSync("review_result.txt", text);
90+
console.log("✅ Gemini 리뷰 결과 저장 완료");
91+
92+
- name: Comment on Pull Request
93+
uses: actions/github-script@v7
94+
with:
95+
script: |
96+
const fs = require("fs");
97+
const review = fs.readFileSync("review_result.txt", "utf8");
98+
99+
const pr_number = context.payload.pull_request.number;
100+
const owner = context.repo.owner;
101+
const repo = context.repo.repo;
102+
103+
console.log(`🗣️ Posting Gemini review to PR #${pr_number}`);
104+
105+
await github.rest.issues.createComment({
106+
owner,
107+
repo,
108+
issue_number: pr_number,
109+
body: `## 🤖 Gemini 코드리뷰 결과\n${review}`
110+
});
111+
112+
console.log("✅ Gemini 리뷰 코멘트 작성 완료");

0 commit comments

Comments
 (0)