Ten dokument zawiera opis konfigurowania dostosowywania kodu w Gemini Code Assist przez łączenie Gemini Code Assist z prywatnymi repozytoriami kodu. Ta funkcja umożliwia otrzymywanie rekomendacji dotyczących kodu, które są oparte na bibliotekach wewnętrznych, prywatnych interfejsach API i stylu kodowania Twojej organizacji.
Zanim zaczniesz
- Skonfiguruj Gemini Code Assist w ramach subskrypcji Enterprise.
- tworzyć i konfigurować konta użytkowników, Każdy deweloper w Twojej organizacji, który korzysta z Gemini Code Assist, musi mieć tożsamość użytkownika w Google Cloud z uprawnieniami dostępu do Twojego projektu Google Cloud. Więcej informacji znajdziesz w artykule Przyznawanie ról w konsoli Google Cloud. Upewnij się, że każdy użytkownik ma te role:
Skonfiguruj Developer Connect, a następnie połącz się z repozytorium GitHub.com, GitLab.com lub Bitbucket.org:
GitHub
GitLab
Bitbucket
Pamiętaj też, że dostosowywanie kodu jest obsługiwane tylko w przypadku połączeń Developer Connect w tych lokalizacjach (regionach):
us-central1
europe-west1
asia-southeast1
W środowisku powłoki uruchom
gcloud components update
polecenie, aby upewnić się, że wszystkie zainstalowane komponenty gcloud zostały zaktualizowane do najnowszej wersji. W tym kroku możesz zainstalować i zainicjować gcloud lub użyć edytora Cloud Shell.gcloud components update
Wybierz, które repozytoria prywatne mają być połączone
Zalecamy łączenie repozytoriów, które:
- mieć kod o stylu lub strukturze podobnej do tej, którą mają stosować Twoi programiści;
- masz prywatne biblioteki lub interfejsy API, które chcesz wywoływać z obecnej bazy kodu,
(Opcjonalnie) Wybierz pliki, które nie mają być indeksowane
Domyślnie indeksowanie dostosowywania kodu obejmuje wszystkie obsługiwane pliki z kodem w określonych repozytoriach.
Aby zapobiec ujawnieniu kodu, którego nie chcesz indeksować, możesz użyć wzorców gałęzi, aby kontrolować dostęp do indeksu, i użyć stabilnej gałęzi, np. main
.
Możesz też wykluczyć pliki z indeksu, tworząc plik .aiexclude
.
Utwórz indeks
Dostosowywanie kodu opiera się na indeksie, który umożliwia analizę pozwalającą szybciej generować sugestie i wyszukiwać kod.
gcloud
Aby utworzyć indeks, w środowisku powłoki użyj gemini code-repository-indexes create
polecenia:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Terraform
resource "google_gemini_code_repository_index" "example" {
location = "REGION"
code_repository_index_id = "INDEX_NAME"
}
Zastąp następujące elementy:
INDEX_NAME
: nazwa indeksu. Ważne: zapisz nazwę indeksu. Będzie on potrzebny w kilku krokach tego dokumentu.PROJECT_ID
: identyfikator Twojego projektu Google Cloud;REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który został skonfigurowany w Developer Connect w projekcie Google Cloud.
Tworzenie indeksu trwa zwykle 30 minut, ale może potrwać nawet godzinę.
Google ogranicza liczbę indeksów repozytoriów kodu do jednego na projekt i organizację.
Kontrolowanie dostępu do indeksu za pomocą grup repozytoriów
Grupa repozytoriów to kontener konfiguracji indeksowania, który zawiera repozytoria i wzorce ich gałęzi. Grupy repozytoriów są przeznaczone do szczegółowej kontroli dostępu, dzięki czemu deweloperzy mają dostęp do indeksowanych danych z tych grup, w których mają uprawnienie cloudaicompanion.repositoryGroups.use
.
Grupy repozytoriów zawierają repozytoria Developer Connect lub linki z tego samego projektu i lokalizacji.
Administratorzy wykonują te czynności:
- Tworzy zasób indeksu repozytorium kodu.
- W tym samym projekcie i lokalizacji skonfiguruj nowe połączenie Developer Connect.
- Połącz repozytoria Git w połączeniu.
Pobierz nazwy zasobów linków, wybierz wzorzec gałęzi do indeksowania dla każdego linku i umieść go w co najmniej 1 grupie repozytoriów.
gcloud
Aby utworzyć grupę repozytoriów, w środowisku powłoki użyj gemini code-repository-indexes repository-groups create
polecenia:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'
Terraform
resource "google_gemini_repository_group" "example" {
location = "REGION"
code_repository_index = "INDEX_NAME"
repository_group_id = "REPOSITORY_GROUP"
repositories {
resource = "REPOSITORY_RESOURCE_NAME"
branch_pattern = "BRANCH_NAMES"
}
}
Zastąp następujące elementy:
REPOSITORY_GROUP
: nazwa grupy repozytoriów, np.default
.PROJECT_ID
: identyfikator Twojego projektu Google Cloud;REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który został skonfigurowany w Developer Connect w projekcie Google Cloud.INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku, aby utworzyć indeks.REPOSITORY_RESOURCE_NAME
: nazwa repozytorium w połączeniu Developer Connect. Aby znaleźć nazwę repozytorium, otwórz stronę Developer Connect w konsoli Google Cloud i na karcie Repozytoria w kolumnie Połączenie w tabeli poszukaj identyfikatora połączenia. Aby skopiować nazwę zasobu, kliknij menu more_vert, aby wyświetlić więcej opcji, i wybierz Kopiuj ścieżkę zasobu.BRANCH_NAMES
: nazwa gałęzi, które chcesz indeksować, np.main|dev
.
Możesz też utworzyć grupę repozytoriów z repozytoriami zdefiniowanymi w pliku JSON (lub YAML) w tym formacie:
JSON
[
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
}
]
YAML
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
Aby utworzyć grupę repozytoriów na podstawie pliku JSON lub YAML, w środowisku powłoki użyj polecenia gemini code-repository-indexes repository-groups create
:
JSON
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.json
YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
Jeśli wolisz, możesz szyfrować dane i kontrolować je za pomocą klucza szyfrowania zarządzanego przez klienta (CMEK) w usłudze Cloud Key Management Service. Więcej informacji o używaniu klucza CMEK znajdziesz w artykule Szyfrowanie danych za pomocą kluczy szyfrowania zarządzanych przez klienta.
Przyznawanie roli uprawnień grupie repozytoriów w projekcie
Otrzymujesz tylko sugestie z repozytoriów w indeksie. Każde repozytorium należy do co najmniej 1 grupy repozytoriów. Aby uzyskać dostęp do sugestii, musisz przyznać rolę użytkownika grup repozytoriów usługi Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser
), która zawiera wymagane uprawnienie cloudaicompanion.repositoryGroups.user
, grupie repozytoriów w jeden z tych sposobów:
- Przyznaj podmiotom zabezpieczeń uprawnienia dostępu do całego indeksu.
- Przyznawanie podmiotom zabezpieczeń dostępu do podzbioru indeksu.
Przyznawanie podmiotom uprawnień dostępu do całego indeksu
Aby powiązać uprawnienia projektu w środowisku powłoki, użyj
projects add-iam-policy-binding
polecenia:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Zastąp następujące elementy:
PROJECT_ID
: identyfikator projektu, w którym znajduje się grupa repozytoriów.PRINCIPAL
: adres e-mail podmiotu, który potrzebuje dostępu, np.user:test-user@gmail.com
w przypadku osoby lubgroup:admins@example.com
w przypadku grupy.
Więcej informacji znajdziesz w sekcji
gcloud projects set-iam-policy
.Gdy pojawi się prośba o określenie warunku, wpisz
None
.
Przyznawanie podmiotom zabezpieczeń dostępu do podzbioru indeksu
Możesz utworzyć wiele grup repozytoriów i przypisać role IAM do różnych podmiotów zabezpieczeń.
gcloud
Aby skonfigurować zasady uprawnień, musisz przygotować plik JSON lub YAML zasad uprawnień, który będzie zawierać listę grup uprawnień i przypisanych ról. Na przykład:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Więcej informacji i składnię znajdziesz w artykule Omówienie zasad zezwalania.
Aby ustawić uprawnienia, w środowisku powłoki użyj polecenia gemini code-repository-indexes repository-groups set-iam-policy
:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
Zastąp następujące elementy:
GROUP_NAME
: nazwa grupy repozytoriów utworzona w poprzednim kroku, aby kontrolować dostęp do indeksu za pomocą grup repozytoriów.POLICY_FILE
: zasady uprawnień.REGION
: obsługiwany region, zgodnie z informacjami w sekcji Zanim zaczniesz na tej stronie, który został skonfigurowany w Developer Connect w Twoim projekcie Google Cloud.INDEX_NAME
: nazwą indeksu utworzonego w poprzednim kroku, aby utworzyć indeks.Więcej informacji znajdziesz w sekcji
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Terraform
data "google_iam_policy" "foo" {
binding {
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["test-user@example.com"]
}
}
resource "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
policy_data = data.google_iam_policy.foo.policy_data
}
data "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
depends_on = [
google_gemini_repository_group_iam_policy.foo
]
}
Możesz też utworzyć powiązanie:
resource "google_gemini_repository_group_iam_binding" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["test-user@example.com"]
}
Zastąp następujące elementy:
GROUP_NAME
: nazwa grupy repozytoriów utworzona w poprzednim kroku, aby kontrolować dostęp do indeksu za pomocą grup repozytoriów.REGION
: obsługiwany region, zgodnie z informacjami w sekcji Zanim zaczniesz na tej stronie, który został skonfigurowany w Developer Connect w Twoim projekcie Google Cloud.INDEX_NAME
: nazwą indeksu utworzonego w poprzednim kroku, aby utworzyć indeks.Więcej informacji znajdziesz w sekcji
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Sprawdzanie stanu indeksowania
W zależności od liczby repozytoriów, które chcesz zindeksować, i ich rozmiaru indeksowanie treści może potrwać do 24 godzin. W przypadku dużych repozytoriów indeksowanie może potrwać dłużej. Indeksowanie odbywa się raz na 24 godziny i uwzględnia wszystkie zmiany wprowadzone w repozytorium.
Wyszukaj dzienniki
indexing
. Więcej informacji znajdziesz w artykule Język zapytań usługi Logging.Konsola
W konsoli interfejsów API Google otwórz Eksplorator logów.
Użyj filtra nazw logów, aby wyświetlić logi
indexing
.
gcloud
Aby wyszukać dzienniki indeksowania, w środowisku powłoki użyj
logging read
polecenia:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Zastąp
PROJECT_ID
identyfikatorem projektu, w którym znajduje się grupa repozytoriów.Aby na przykład wyświetlić błędy w dziennikach
indexing
, uruchom to polecenie:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Sprawdź powiązane stany indeksowania, np.:
- Początek indeksowania repozytorium, np.
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
- Koniec indeksowania poszczególnych repozytoriów, na przykład:
- Udało się:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Niepowodzenie:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Udało się:
- Koniec indeksowania repozytorium, np.:
- Udało się:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Niepowodzenie:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.
- Udało się:
W przypadku stanów indeksu
REPOSITORY_NAME
to repozytorium, które chcesz sprawdzić.- Początek indeksowania repozytorium, np.
Sprawdź powiązane błędy indeksowania, takie jak:
- Nie udało się pobrać repozytorium.
- Nie udało się wyświetlić listy plików repozytorium.
- Nie udało się pobrać informacji o repozytorium z indeksu.
- Nie udało się pobrać plików z indeksu.
- Błąd wewnętrzny.
Korzystanie z dostosowywania kodu
Po skonfigurowaniu dostosowywania kodu zaczniesz otrzymywać sugestie dotyczące uzupełniania i generowania kodu, które mogą być oparte na indeksowanym przez Ciebie kodzie prywatnym, a także na wynikach pełnej analizy bazy kodu.
Więcej informacji o korzystaniu z dostosowywania kodu i o sprawdzonych metodach znajdziesz w artykule Korzystanie z dostosowywania kodu.
Wyłączanie dostosowywania kodu
Aby wyświetlić listę wszystkich grup repozytoriów dla bieżącego indeksu, w środowisku powłoki użyj
gemini code-repository-indexes repository-groups list
polecenia:gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri
Zastąp następujące elementy:
REGION
: obsługiwany region, zgodnie z informacjami w sekcji Zanim zaczniesz na tej stronie, który został skonfigurowany w Developer Connect w Twoim projekcie Google Cloud.PROJECT_ID
: identyfikator Twojego projektu Google Cloud;INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku, aby utworzyć indeks.
Aby usunąć grupę repozytoriów z bieżącego indeksu, użyj polecenia
gemini code-repository-indexes repository-groups delete
:gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
Powtarzaj krok 3 dla każdej grupy repozytoriów, aż usuniesz z indeksu wszystkie grupy repozytoriów.
Opcjonalnie: aby usunąć indeks, w środowisku powłoki użyj polecenia
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Co dalej?
- Zacznij korzystać z Gemini Code Assist:
- VS Code, IntelliJ i inne obsługiwane środowiska IDE JetBrains: kodowanie z Gemini Code Assist
- Cloud Shell: pisanie kodu z pomocą Gemini Code Assist
- Cloud Workstations: pisanie kodu z Gemini Code Assist
- Dowiedz się, jak dostosowywać kod i poznaj sprawdzone metody.
- Dowiedz się, jak szyfrować dane za pomocą kluczy szyfrowania zarządzanych przez klienta (CMEK).
- Więcej informacji o Developer Connect
- Dowiedz się, jak i kiedy Gemini w Google Cloud korzysta z Twoich danych.