Skip to content

Latest commit

ย 

History

History
122 lines (91 loc) ยท 5.07 KB

File metadata and controls

122 lines (91 loc) ยท 5.07 KB

๐Ÿค– AI Code Review Bot (GitLab & SVN)

"์ธํ„ฐ๋„ท์ด ์•ˆ ๋˜๋Š” ํ์‡„๋ง์—์„œ๋„ OK! ๋ณด์•ˆ ๊ฑฑ์ • ์—†๋Š” AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด"

์ด ํ”„๋กœ์ ํŠธ๋Š” ์™ธ๋ถ€ ์ธํ„ฐ๋„ท ์ ‘์†์ด ์ œํ•œ๋œ ํ์‡„๋ง(Closed Network) ๋˜๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค(On-Premise) ํ™˜๊ฒฝ์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ AI ์ž๋™ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
๋กœ์ปฌ LLM์ธ Ollama๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์™ธ๋ถ€๋กœ ์œ ์ถœํ•˜์ง€ ์•Š๊ณ ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐ŸŒŸ Key Features

  • ๐Ÿ”’ Security First: ์™ธ๋ถ€ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด ๋กœ์ปฌ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ”— Multi-VCS Support: GitLab Merge Request์™€ SVN Commit์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • โšก Easy Setup: Docker ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋กœ ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์„ค์ •์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ Quick Start

Docker Hub์— ๋“ฑ๋ก๋œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ‰์‹œ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰ Docker Hub: chanbeen/internal-code-review-bot

์‹คํ–‰์„ ์œ„ํ•œ docker-compose.yml ์˜ˆ์‹œ
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์‹คํ–‰ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. environment ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ ์„น์…˜์— ๋งž์ถฐ ์ˆ˜์ • ํ•ด ์ฃผ์„ธ์š”.

services:
  review-bot:
    image: chanbeen/internal-code-review-bot:latest
    container_name: review-bot
    ports:
      # ๋ฆฌ๋ทฐ ๋ด‡ ์‹คํ–‰ ํฌํŠธ
      - "8080:8080"
    environment:
      # ๋ด‡ ์„œ๋ฒ„ ์„ค์ • (๋ณธ ์„œ๋ฒ„)
      - SERVER_BASE_URL=http://your-server-ip:8080

      # ์—ฐ๋™ํ•  GitLab / SVN / Ollama ์ •๋ณด
      - GITLAB_BASE_URL=http://your-gitlab-ip
      - GITLAB_PRIVATE_TOKEN=your-access-token
      - SVN_BASE_URL=svn://your-svn-ip:3690
      - SVN_KEYWORD=[review]
      - OLLAMA_BASE_URL=http://your-ollama-ip:11434
      - OLLAMA_MODEL=llama3

    # SVN ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„
    volumes:
      - ./reviews:/app/reviews
docker-compose up -d

โš™๏ธ Configuration

application.yml์„ ์ˆ˜์ •ํ•  ํ•„์š” ์—†์ด, ์•„๋ž˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋งŒ์œผ๋กœ ๋ชจ๋“  ์„ค์ •์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
SERVER_BASE_URL http://localhost:8080 ๋ฆฌ๋ทฐ ๋ด‡ ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ์ฃผ์†Œ
GITLAB_BASE_URL http://localhost:8929 ์—ฐ๋™ํ•  GitLab ์„œ๋ฒ„ ์ฃผ์†Œ
GITLAB_PRIVATE_TOKEN - GitLab API ํ˜ธ์ถœ์„ ์œ„ํ•œ Access Token
SVN_BASE_URL svn://localhost:3690 ์—ฐ๋™ํ•  SVN ์„œ๋ฒ„ ์ฃผ์†Œ
SVN_KEYWORD [review] SVN ์ปค๋ฐ‹ ์‹œ ๋ฆฌ๋ทฐ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ํ‚ค์›Œ๋“œ
OLLAMA_BASE_URL http://localhost:11434 Ollama ์„œ๋ฒ„ ์ฃผ์†Œ
OLLAMA_MODEL llama3 ์‚ฌ์šฉํ•  LLM ๋ชจ๋ธ๋ช… (์˜ˆ: llama3
REVIEW_PROMPT (๊ธฐ๋ณธ ํ”„๋กฌํ”„ํŠธ) AI์—๊ฒŒ ์ „๋‹ฌํ•  ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ (์ปค์Šคํ…€ ๊ฐ€๋Šฅ)

๐Ÿ“‚ SVN Hook Setup (Manual)

SVN ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ์šด์˜ ์ค‘์ด๋ผ๋ฉด, ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ SVN ์„œ๋ฒ„์˜ hooks ํด๋”์— ๋„ฃ์–ด์ฃผ์„ธ์š”.
(์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ด‡ ์„œ๋ฒ„๋กœ ์•Œ๋ฆผ๋งŒ ๋ณด๋‚ผ ๋ฟ, ๋ณ„๋„์˜ ๋กœ์ง ์ˆ˜์ •์ด ํ•„์š” ์—†๋Š” ๋ฒ”์šฉ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.)

  • Linux: ./docker/svn-hooks/post-commit (๋ณต์‚ฌ ํ›„ chmod +x ์‹คํ–‰ ํ•„์ˆ˜)
  • Windows: ./docker/svn-hooks/windows/ ํด๋” ๋‚ด์˜ .bat ๋ฐ .ps1 ํŒŒ์ผ ๋ชจ๋‘ ๋ณต์‚ฌ

๐Ÿงช Test Environment (All-in-One)

๊ฐœ๋ฐœ์ด๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด GitLab + SVN + Ollama + Review Bot์„ ํ•œ ๋ฒˆ์— ๋„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

1. Docker ์‹คํ–‰

docker ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ docker-compose๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2. ์ดˆ๊ธฐ ์„ค์ •

์ธํ”„๋ผ๊ฐ€ ๊ตฌ๋™๋œ ํ›„, ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋งŒ ์ฑ™๊ฒจ์ฃผ์„ธ์š”.

  1. AI ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ (docker exec -it ollama-server ollama pull llama3)
  2. GitLab ํ† ํฐ ์„ค์ •
    1. http://localhost:8929 ์ ‘์† (root / Password1234!)
    2. User Settings > Access Tokens์—์„œ ํ† ํฐ ๋ฐœ๊ธ‰
    3. docker/.env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  GITLAB_TOKEN=๋ฐœ๊ธ‰๋ฐ›์€ํ† ํฐ ์ž…๋ ฅ ํ›„ ๋ด‡ ์žฌ์‹œ์ž‘ (docker-compose restart review-bot)

3. Webhook ๋“ฑ๋ก

GitLab: ๋ฆฌ๋ทฐ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ Settings > Webhooks > http://review-bot:8080/webhook/gitlab ๋“ฑ๋ก (Merge Request) SVN: ์ด๋ฏธ ์ž๋™์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. svn://localhost:3690/example-svn์— [review] ํ‚ค์›Œ๋“œ๋กœ ์ปค๋ฐ‹ํ•ด๋ณด์„ธ์š”.


๐Ÿค” Docker๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ

    1. Java 17 ์ด์ƒ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    1. ์‹คํ–‰ ์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ธ์ž(Argument)๋กœ ๋„˜๊ฒจ์ฃผ์„ธ์š”.

์˜ˆ์‹œ ์‹คํ–‰ ๋ช…๋ น์–ด

java -jar internal-code-review-bot.jar \
  --GITLAB_PRIVATE_TOKEN="your-token" \
  --GITLAB_BASE_URL="http://your-gitlab-ip" \
  --OLLAMA_BASE_URL="http://localhost:11434"
  ...

๐Ÿ“ License

This project is licensed under the MIT License.

โ˜๏ธ ๊ตฌ์กฐ๋„

Image