"์ธํฐ๋ท์ด ์ ๋๋ ํ์๋ง์์๋ OK! ๋ณด์ ๊ฑฑ์ ์๋ AI ์ฝ๋ ๋ฆฌ๋ทฐ์ด"
์ด ํ๋ก์ ํธ๋ ์ธ๋ถ ์ธํฐ๋ท ์ ์์ด ์ ํ๋ ํ์๋ง(Closed Network) ๋๋ ์จํ๋ ๋ฏธ์ค(On-Premise) ํ๊ฒฝ์ ์ํด ๊ฐ๋ฐ๋ AI ์๋ ์ฝ๋ ๋ฆฌ๋ทฐ ์์คํ
์
๋๋ค.
๋ก์ปฌ LLM์ธ Ollama๋ฅผ ํ์ฉํ์ฌ, ์์ค ์ฝ๋๋ฅผ ์ธ๋ถ๋ก ์ ์ถํ์ง ์๊ณ ๋ ์์ ํ๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์๋ํํ ์ ์์ต๋๋ค.
- ๐ Security First: ์ธ๋ถ ์ธํฐ๋ท ์ฐ๊ฒฐ ์์ด ๋ก์ปฌ์์ ์๋ฒฝํ๊ฒ ๋์ํฉ๋๋ค.
- ๐ Multi-VCS Support: GitLab Merge Request์ SVN Commit์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
- โก Easy Setup: Docker ์ด๋ฏธ์ง ํ๋๋ก ์ฆ์ ์คํ ๊ฐ๋ฅํ๋ฉฐ, ๋ณต์กํ ์ค์ ์ ํ๊ฒฝ ๋ณ์๋ก ์ ์ดํฉ๋๋ค.
Docker Hub์ ๋ฑ๋ก๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ฆ์ ์๋น์ค๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์คํ์ ์ํ 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/reviewsdocker-compose up -dapplication.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 ์๋ฒ๋ฅผ ์ง์ ์ด์ ์ค์ด๋ผ๋ฉด, ์๋ ์คํฌ๋ฆฝํธ๋ฅผ SVN ์๋ฒ์ hooks ํด๋์ ๋ฃ์ด์ฃผ์ธ์.
(์ด ์คํฌ๋ฆฝํธ๋ ๋ด ์๋ฒ๋ก ์๋ฆผ๋ง ๋ณด๋ผ ๋ฟ, ๋ณ๋์ ๋ก์ง ์์ ์ด ํ์ ์๋ ๋ฒ์ฉ ๋ฒ์ ์
๋๋ค.)
- Linux: ./docker/svn-hooks/post-commit (๋ณต์ฌ ํ chmod +x ์คํ ํ์)
- Windows: ./docker/svn-hooks/windows/ ํด๋ ๋ด์ .bat ๋ฐ .ps1 ํ์ผ ๋ชจ๋ ๋ณต์ฌ
๊ฐ๋ฐ์ด๋ ํ ์คํธ๋ฅผ ์ํด GitLab + SVN + Ollama + Review Bot์ ํ ๋ฒ์ ๋์ฐ๊ณ ์ถ๋ค๋ฉด ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์.
docker ํด๋๋ก ์ด๋ํ์ฌ docker-compose๋ฅผ ์คํํฉ๋๋ค.
์ธํ๋ผ๊ฐ ๊ตฌ๋๋ ํ, ๋ค์ ๋ ๊ฐ์ง๋ง ์ฑ๊ฒจ์ฃผ์ธ์.
- AI ๋ชจ๋ธ ๋ค์ด๋ก๋ (
docker exec -it ollama-server ollama pull llama3) - GitLab ํ ํฐ ์ค์
- http://localhost:8929 ์ ์ (root / Password1234!)
- User Settings > Access Tokens์์ ํ ํฐ ๋ฐ๊ธ
docker/.envํ์ผ์ ์์ฑํ๊ณGITLAB_TOKEN=๋ฐ๊ธ๋ฐ์ํ ํฐ์ ๋ ฅ ํ ๋ด ์ฌ์์ (docker-compose restart review-bot)
GitLab: ๋ฆฌ๋ทฐ ๋์ ํ๋ก์ ํธ Settings > Webhooks > http://review-bot:8080/webhook/gitlab ๋ฑ๋ก (Merge Request) SVN: ์ด๋ฏธ ์๋์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค. svn://localhost:3690/example-svn์ [review] ํค์๋๋ก ์ปค๋ฐํด๋ณด์ธ์.
-
- Java 17 ์ด์์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
-
- ์คํ ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ธ์(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"
...
This project is licensed under the MIT License.