1. 시작하기 전에
이 Codelab에서는 비공개 저장소에 맞게 맞춤설정된 코드 맞춤설정 제안을 제공하도록 Gemini Code Assist를 준비하는 방법을 보여줍니다. 이렇게 하면 특히 자주 반복되는 유사한 작업에 대한 특정 규칙이 있는 팀의 경우 코드 어시스턴트의 결과가 훨씬 더 유용해질 수 있습니다. 이 기능을 위해 Gemini가 비공개 코드베이스를 색인하도록 허용해도 Gemini가 비공개 코드를 광범위하게 학습할 수 있는 것은 아닙니다.
.aiexclude 파일을 사용하여 코드 맞춤설정 고려 대상에서 민감하거나 관련 없는 파일을 제외하는 방법도 살펴보겠습니다.
기본 요건
- Gemini Code Assist에 대한 기본적인 이해와 사용 설정된 프로젝트에 대한 액세스 권한
- 코드 맞춤설정을 위한 지원되는 코딩 언어에 대한 지식
us-central1또는europe-west1에서 리소스를 만들 수 있어야 합니다. 코드 맞춤설정에는 해당 위치의 Developer Connect 연결이 필요하기 때문입니다.- 최신 버전의 인증된 Google Cloud CLI
학습 내용
- Gemini Code Assist Enterprise에서 코드 맞춤설정을 활용하는 방법
- 코드 맞춤설정으로 팀의 시간을 절약할 수 있는 여러 사용 사례 중 하나
필요한 항목
- Google Cloud 프로젝트에서 Gemini Code Assist가 사용 설정됨
- 맞춤설정 요청을 위해 색인을 생성할 비공개 저장소
- 맞춤설정 요청을 위해 코드를 색인화할 시간입니다. 최대 24시간이 소요될 수 있습니다.
- Gemini Code Assist가 설치된 IDE
2. 컨텍스트
코드 맞춤설정을 사용해 보려면 다음 두 가지가 필요합니다.
- Gemini가 사용 설정된 Google Cloud 프로젝트 액세스
- Gemini의 대답을 알려주는 비공개 저장소

Gemini가 색인을 생성하기에 가장 적합한 저장소에는 조직 전체에서 자주 재사용되는 코드가 포함되어 있습니다. 이 Codelab에 제공된 샘플 저장소에는 이 기준을 충족하는 데이터 전송 객체 폴더가 있는 표준 Spring Boot 웹 서비스가 포함되어 있습니다. 데이터베이스의 각 항목이 프레젠테이션 레이어로 전송될 때 설명하는 유사한 클래스가 생성되기 때문입니다.
3. (선택사항) 저장소 설정
자체 비공개 저장소 대신 예시 저장소를 사용하려면 원하는 터미널 편집기 또는 Cloud Shell에서 다음 단계를 따르세요. 비공개 저장소를 만들어 코드 맞춤설정을 실제로 확인해 보세요.
mkdir customization-starter
cd customization-starter
curl https://start.spring.io/starter.zip -d dependencies=web,lombok \
-d javaVersion=21 \
-d type=maven-project \
-d bootVersion=3.3.4 -o cc-starter.zip
unzip cc-starter.zip
rm cc-starter.zip
pushd src/main/java/com/example/demo
mkdir dtos
touch dtos/LedgerDTO.java
LedgerDTO 파일에 다음을 추가합니다.
package com.example.demo.dtos;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@Getter
@Setter
@Accessors(chain = true)
public class LedgerEntryDto {
private Long id;
private String accountName;
private double amount;
private String transactionType;
private String description;
private java.util.Date transactionDate;
}
이렇게 하면 이 코드베이스의 다른 기여자가 사용할 것으로 예상되는 접근자가 코드 맞춤설정이 사용 설정된 상태로 정확하게 생성된다는 것을 보여주기에 충분합니다.
비공개로 유지하면서 새 저장소를 만듭니다. 아래 단계에 따라 스타터를 새 저장소에 푸시합니다.
popd
gh auth login
git init
git add .
git commit -m "code customization starter"
git remote add origin git@github.com:<YOUR_GITHUB_ID>/customization-starter.git
git branch -M main
git push -u origin main
4. 파일 제외
Gemini에 비공개 저장소 액세스 권한을 부여하기 전에 팀에서 색인 생성하지 않으려는 관련 없는 파일이나 민감한 파일을 제외하는 방법을 이해하는 것이 중요합니다. 이를 위해 .aiexclude 파일이 사용됩니다. 이 파일은 .gitignore와 비슷하지만 몇 가지 중요한 차이점이 있습니다.
- 빈
.aiexclude파일은 디렉터리와 모든 하위 디렉터리의 모든 파일을 차단합니다.- 이는
**/*가 포함된 파일과 동일합니다.
- 이는
.aiexclude파일은 부정 (패턴 앞에!프리픽스 추가)을 지원하지 않습니다.
이를 염두에 두고 팀에서 고려 대상에서 제외하려는 파일 유형이나 디렉터리를 고려하여 각 항목을 별도의 줄에 나열하세요.
#Block all files with .key extensions
*.key
#Block all files under sensitive/dir
my/sensitive/dir/
#Block all .key files under sensitive/dir
my/sensitive/dir/ /.key
5. Developer Connect 구성
Developer Connect는 GitHub 또는 GitLab의 비공개 코드 저장소에 대한 연결 및 링크를 용이하게 하는 서비스입니다. 이를 통해 Gemini Code Assist가 비공개 저장소에 안전하게 연결하여 대답을 개선하는 데 사용되는 색인을 만들 수 있습니다.
다음 두 가지 개념은 Developer Connect가 코드를 안전하게 제공하는 방법을 이해하는 데 도움이 됩니다.
연결
- Google과 서드 파티 소스 코드 관리 플랫폼 간의 브리지를 나타냅니다.
링크
- 연결된 소스 코드 관리 플랫폼 내에서 선택한 개별 소스 코드 저장소와의 연결을 나타냅니다.
이러한 개념을 염두에 두고 Developer Connect 페이지로 이동하여 프로젝트의 API를 사용 설정하세요.

그런 다음 적절한 단계에 따라 GitHub 또는 GitLab의 연결 및 링크를 만듭니다. 두 리소스는 모두 마법사 프로세스 중에 생성됩니다.

Gemini의 코드 맞춤설정 기능이 대답에 고려하도록 하려는 각 저장소에 대해 이 단계를 반복하여 링크를 만듭니다. 여러 저장소가 동일한 플랫폼에서 제공되는 경우 기존 연결을 재사용할 수 있습니다.
6. 색인 만들기 및 연결
저장소를 빠르게 파싱하고 분석하기 위해 코드 맞춤설정은 색인을 사용합니다. 다음 단계에서 필요하므로 사용한 INDEX_NAME을 기록해 둡니다.
색인을 만들려면 다음 명령어를 실행합니다.
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Invalid choice: ... 오류가 발생하면 다음 명령어를 실행하여 Google Cloud CLI가 최신 상태인지 확인합니다.
gcloud components update
다음으로 저장소 그룹을 만들어 색인에 대한 액세스를 허용합니다.
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'
다음 값을 바꿉니다.
- REPOSITORY_GROUP: 만들 저장소 그룹의 이름
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- INDEX_NAME: 이전 단계에서 색인을 만들기 위해 정의한 색인의 이름입니다.
- REGION: 문서의 목록에 있는 지원되는 리전으로, Google Cloud 프로젝트의 Developer Connect에서 구성되었습니다.
- INDEX_CONNECTION: 색인을 만들기 위해 이전 단계에서 만든 색인의 연결입니다.
- REPOSITORY: 색인을 생성할 저장소입니다. 저장소를 하나 이상 지정해야 하며 필요에 따라 여러 저장소를 지정할 수 있습니다.
- BRANCH_NAMES: 색인을 생성하려는 브랜치의 이름입니다(예: main 또는 dev).
색인을 생성할 저장소의 수와 크기에 따라 콘텐츠 색인을 생성하는 데 최대 24시간이 걸릴 수 있습니다. 24시간마다 한 번 색인을 생성하여 저장소에서 수행된 변경사항을 가져옵니다. 이 단계를 참고하여 색인 생성 상태를 확인할 수 있습니다.

마지막으로 원하는 주 구성원에게 그룹에 대한 액세스 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. 맞춤 코드 생성
이제 Gemini가 비공개 저장소의 코드에 액세스할 수 있으므로 코드 완성 요청에 관련 스니펫이 표시될 것으로 예상됩니다. 예시 저장소에서 DTO 폴더로 이동할 수 있으며, 새 객체를 나타내는 새 클래스를 만들 때 입력하는 대로 예상되는 주석이 표시됩니다.

8. 결론
이 Codelab을 완료했습니다. Gemini Code Assist의 코드 맞춤설정 기능을 사용하는 방법을 배웠습니다. 이제 팀의 특정 비공개 코드베이스에 맞게 대답을 맞춤설정할 수 있으므로 각 프롬프트와 코드 완성은 팀의 개발자에게 더 유용합니다.
다음 문서와 자료를 검토하여 자세히 알아보고 IAM 역할 설정과 같은 사항에 대한 지원을 받으세요.