새소식

300x250
AI/Tech Lounge: IT 이슈와 생각들

AI 코드 리뷰 자동화 적용 후 삭제.. 이야기 with GenAI (Code Review Automation)

  • -
728x90

안녕하세요! 갓대희 입니다. :- )

 

오늘은 코드리뷰에 대해 여러가지 방법을 적용하다보다 알게된 GenAI라는 구글에서 공식 지원하는 기능을 통해 소스 리뷰를 해보려 한다. 

 

한번더 정확히 하자면, 이전엔 PR 리뷰 자동화를 진행했는데 이번엔 전체 소스 리뷰? 라고 볼 수 있다.  

결론만 먼저 말씀드리면... 난 해보고 지웠다...

 - 테스트 하고 지우기까지 총 들어간 총 비용. 2800원.

  

왠지 이걸 써보려고 하시는 분들이 있을 것 같아서 히스토리로 남겨 두려고 한다.

지운 이유는 최근 나온 클로드 코드나, Gemini Gode Assist등을 통해 더 쉽고, 더 간단하게 적용 가능한 것 같아 지웠다.

 

다만 혹여 나와 같은 고민을 했고, 검색 통해 알게되어 진행을 해보고자 하시는 분들께는

그냥 간접 경험 정도로 될 수 있도록... 혹시 이 기능을 만족하셔서 쓸수도 있지만, 나처럼 다른 툴을 선호하시는 분들이 있을 수 있으니 적용했던 후기는 남겨 놓으려 한다.   

 

 - 도입중이신 분들은 제가 따라한걸 한번 구경 해보시는걸 추천 한다. 

 

 - 혹시나 소스 리뷰관련하여 고민중이신 분들에게 도움이 되자면.. ( 문제는 다 github 베이스 이지만 ㅠ ) 다른글들도 남겨 둔다.

ex) github에 pull request 자동화 적용한 글

2025.07.22 - [AI/Gemini] - [gemini 활용기] - Github PR 리뷰 AI 자동화 (PullRequest Automation with Gemini Code Assist)

 

ex) 클로드 코드로 개인 커밋 소스 리뷰 적용 사례

2025.08.01 - [AI/Claude] - Claude Code CLI (2) - 기본 사용 방법 (클로드 코드 - 고급 CLI 명령어 사용 방법)

 

ex) 다음과 같은 n8n 같은 도구로 workflow 구성하는 방법도 있을 것 같다. (컨셉만 확인하느라 아직 버그가 존재해서 나중에 버그 다 수정 후 글 작성은 해보려 한다.)

 

- 여차저차 그럼 일단 시작 해보려 한다.

 

Google Codelabs 튜토리얼을 통해 진행 시작

 - 모든 내용은 다음 문서 튜토리얼에 기반하여 진행해 보려고 한다.

https://codelabs.developers.google.com/genai-for-dev-bitbucket-code-review?hl=ko#0


devai CLI라는 툴을 사용해서 로컬에서도 코드 리뷰를 할 수 있고, Bitbucket Pipelines에서도 실행할 수 있다.

devai CLI 아키텍처

  1. 개발자가 로컬에서 devai CLI로 코드 리뷰 실행
  2. CLI가 Google Cloud Vertex AI (Gemini Pro)에 코드 전송
  3. Gemini가 코드 분석 후 리뷰 코멘트 생성
  4. Bitbucket Pipeline에서 자동으로 실행되어 PR에 코멘트 추가
  5. 선택적으로 JIRA 이슈 생성도 가능

 

1단계 : Google Cloud 환경 준비하기

가장 먼저 Google Cloud에서 프로젝트를 생성하고 필요한 API들을 활성화해야 한다.

이전 Gemini CLI를 경험해봤다면 조금 익숙할 것이다. 그리고 Bitbucket은 인증 방식이 조금 다르다.

난 계정이 있긴 하지만, 튜토리얼을 진행하기 위해 처음부터 해보겠다.

 

Google Cloud 설정 단계

1.Google Cloud Console에서 새 프로젝트 생성


2. 검색창 오른쪽에 있는 아이콘을 클릭하여 Cloud Shell을 활성화 한다.

 

3. 서비스 어카운트 생성 및 JSON 키 다운로드

ex) 서비스 어카운트 이름 : bitbucket-ai-reviewer
ex) 설명 : Bitbucket AI code review automation

 

4. 서비스 어카운트에 'Vertex AI 사용자' 권한 부여 및 JSON 키 생성

 - JSON 키 다운로드: 키 생성 → JSON 형식 선택


5. JSON 키 base64 인코딩
- JSON 키 파일을 Bitbucket에서 사용하려면 base64로 인코딩해야 한다.

 - 인코딩한 결과는 복사해두자. 나중에 Bitbucket Repository Variables에 저장할 때 필요하다.

# macOS/Linux
base64 -i downloaded-key.json

# Windows (PowerShell)
[Convert]::ToBase64String([IO.File]::ReadAllBytes("downloaded-key.json"))

 

 - cli에 익숙한 분들은 gcloud로도 가능하다.

// Google Cloud 프로젝트 생성 및 API 활성화
# gcloud CLI로 프로젝트 생성
gcloud projects create your-project-id --name="Bitbucket AI Review"

# 프로젝트 설정
gcloud config set project your-project-id

# Vertex AI API 활성화
gcloud services enable aiplatform.googleapis.com

# 서비스 어카운트 생성
gcloud iam service-accounts create bitbucket-ai-reviewer \
    --description="Service account for Bitbucket AI code review" \
    --display-name="Bitbucket AI Reviewer"

# 역할 부여
gcloud projects add-iam-policy-binding your-project-id \
    --member="serviceAccount:bitbucket-ai-reviewer@your-project-id.iam.gserviceaccount.com" \
    --role="roles/aiplatform.user"

# JSON 키 생성
gcloud iam service-accounts keys create ~/bitbucket-sa-key.json \
    --iam-account=bitbucket-ai-reviewer@your-project-id.iam.gserviceaccount.com

 

2단계 : Bitbucket Repository 설정하기

1. Bitbucket Pipelines 활성화
 - bitbucket.org → 본인의 프로젝트 repositry 이동 → Repository settings → PIPELINES 섹션 → Settings

 

 - "Enable Pipelines" 토글 버튼을 ON으로 변경


 

2. Repository Variables 설정

 - GitHub Actions와 달리 Bitbucket은 Repository Variables라는 이름을 사용한다.

 - Settings → PIPELINES → Repository variables

 

 - 3개 환경변수 추가

1) GOOGLE_CLOUD_CREDENTIALS
 - 위에서 base64 인코딩한 JSON 키 전체 복사 붙여넣자.
 - Secured 체크

 

2) PROJECT_ID : your-gcp-project-id (Google Cloud 프로젝트 ID)
3) LOCATION : us-central1
 - 한국 리전으로 안바꿔도 된다.

 

 

3. bitbucket-pipelines.yml 생성

 - GitHub Actions와 달리 Bitbucket은 Repository Variables라는 이름을 사용한다.

# 프로젝트 루트 디렉토리로 이동
cd your-bitbucket-project

# bitbucket-pipelines.yml 파일 생성
touch bitbucket-pipelines.yml

 

 - https://github.com/GoogleCloudPlatform/genai-for-developers/blob/main/bitbucket-pipelines.yml 에 있는 내용을 조금 수정했다.

bitbucket-pipelines.yml

image: python:3.9

pipelines:
  pull-requests:
    '**':
      - step:
          name: DevAI Code Review
          script:
            # Google Cloud 인증
            - echo "$GOOGLE_CLOUD_CREDENTIALS" | base64 -d > /tmp/gcp-key.json
            - export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp-key.json
            - export PROJECT_ID=$PROJECT_ID
            - export LOCATION=$LOCATION
            
            # 저장소 클론 및 설치
            - git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
            - cd genai-for-developers/devai-cli
            - pip install -r src/requirements.txt
            - pip install -e src/  # editable install로 devai 모듈 설치
            
            # devai 실행
            - cd ../..
            - python genai-for-developers/devai-cli/src/devai/cli.py review code -c ./
            - python genai-for-developers/devai-cli/src/devai/cli.py review testcoverage -c ./
            
          artifacts:
            - "*.md"

 

 

 

4. 실제로 PR 날린 후 Pipelines 확인시 다음과 같이 동작하는 것을 볼 수 있다.

ex) review code 결과 샘플

 

ex) review testcoverage 결과 샘플

 

 - 여기까지가 튜토리얼 8번까지 진행한 내용이다. 

 

 - 이후 9번부터의 내용을 요약하자면 해당 저장소를 google Cloud Shell과 연동 후 여러가지 명령어를 통해 소스리뷰, 테스트 적용, 보안성 검토 등을 할 수 있다는 얘기인데... 이때 바로 삭제를 한 이유는

 

 - Google Cloud Shell 자체가 오히려 Gemini Code Assist가 기본적으로 연동이 되어있다. 이 기능이 더 .... 나을것 같아서 지웠다.

  - ...안녕....... Gen AI.... 제미나이 코드 어시스트만 있으면 되겠구나 ....

 

 - 다만 이건 자세히보니 2024년도에 출시된 코드 리뷰 자동화로, 그간 구글이 gemini code assist가 어떠한 방향에서부터 발전해 왔는지 그 방향성을 한번 살펴보고가는... 구글의 역사를 잠깐 체험하는 체험 삶의 현장정도는 되지 않았나 싶고
물론 현재 난 github에서 gemini code assist를 통해 pr review 자동화를 하고 있어 그 덕을 충분히 보곤 있다! ㅎㅎㅎ 

 

문제 해결 가이드

자주 발생하는 문제들.... 

Q: Pipeline에서 "403 Forbidden" 에러가 발생해요
A: Google Cloud 서비스 어카운트에 'Vertex AI User' 역할이 제대로 부여되지 않았을 가능성이 높습니다. gcloud projects add-iam-policy-binding 명령어를 다시 실행해보세요.
Q: PR에 코멘트가 달리지 않아요
A: Bitbucket App Password의 권한을 확인하세요. 'Repositories: Write' 권한이 반드시 필요합니다. 또한 BITBUCKET_ACCESS_TOKEN 환경변수가 제대로 설정되었는지 확인하세요.
Q: devai CLI 설치 중 오류가 발생해요
A: Python 3.9 이미지를 사용하고 pip를 업그레이드한 후 설치하세요. pip install --upgrade pip 먼저 실행하는 것이 중요합니다.
Q: Google Cloud 인증이 안 돼요
A: JSON 키를 base64로 인코딩할 때 개행문자가 포함되지 않도록 주의하세요. base64 -w 0 옵션을 사용하거나, 인코딩된 결과에서 개행문자를 제거하세요.
🚨 디버깅 명령어:
# Pipeline에서 환경변수 확인
echo "PROJECT_ID: $PROJECT_ID"
echo "LOCATION: $LOCATION" 
echo "CREDENTIALS 길이: ${#GOOGLE_CLOUD_CREDENTIALS}"

# Google Cloud 인증 테스트
gcloud auth list
gcloud config list project

# devai CLI 버전 확인
devai --version

참고 자료

 

 

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.

💡 AI 관련 질문이 있나요? 눌러보세요!