Z tego dokumentu dowiesz się, jak skonfigurować dostosowywanie kodu Gemini Code Assist, łącząc Gemini Code Assist z prywatnymi repozytoriami kodu. Ta funkcja umożliwia otrzymywanie rekomendacji kodu, które korzystają z bibliotek wewnętrznych, prywatnych interfejsów API i stylu kodowania Twojej organizacji.
Zanim zaczniesz
- Skonfiguruj Gemini Code Assist z subskrypcją Enterprise.
- Tworzenie lub konfigurowanie kont użytkowników. Każdy deweloper w Twojej organizacji, który korzysta z Gemini Code Assist, musi mieć w Google Cloud tożsamość użytkownika z uprawnieniami dostępu do Twojego projektu Google Cloud. Więcej informacji znajdziesz w artykule Przypisywanie ról w konsoli Google Cloud. Upewnij się, że każdy użytkownik ma przypisane te role:
Skonfiguruj Developer Connect, a następnie połącz się z repozytorium GitHub.com, GitLab.com lub Bitbucket.org:
- Połącz z GitHubem.
- Połącz się z GitHub Enterprise Cloud.
- Połącz się z GitHub Enterprise.
- Połącz się z GitLab.
- Połącz się z GitLab Enterprise.
- Połącz się z Bitbucket Cloud.
- Połącz się z Centrum danych Bitbucket.
Pamiętaj też, że dostosowywanie kodu obsługuje tylko połączenia w Developer Connect w tych lokalizacjach (regionach):
us-central1
europe-west1
asia-southeast1
W środowisku powłoki uruchom polecenie
gcloud components update
, 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
Wybieranie repozytoriów prywatnych, które mają być połączone
Sprawdzona metoda: połącz repozytoria, które:
- Upewnij się, że kod ma styl i strukturę podobną do tej, którą mają napisać programiści.
- mieć prywatne biblioteki lub interfejsy API, które chcesz wywoływać z bieżącej bazy kodu;
(Opcjonalnie) Wybierz pliki, które nie są indeksowane
Domyślnie dostosowywanie kodu indeksuje wszystkie obsługiwane pliki kodu w podanych repozytoriach.W wielu przypadkach możesz mieć określone pliki lub poddrzewa, których nie chcesz indeksować. Na przykład:
- informacje o wysokiej wrażliwości z ograniczonym dostępem w organizacji;
- Stary lub przestarzały kod
- Kod wygenerowany automatycznie lub tymczasowy
Aby zapobiec ujawnieniu kodu, który nie ma być indeksowany, możesz użyć wzorca gałęzi, aby kontrolować dostęp do indeksu, i używać stabilnej gałęzi, takiej jak main
.
Możesz też wykluczyć pliki z indeksu, tworząc plik .aiexclude
.
Tworzenie indeksu
Personalizacja kodu polega na analizowaniu i analizowaniu repozytorium za pomocą indeksu w celu szybszego generowania sugestii i wyszukiwania kodu.
Aby utworzyć indeks, w środowisku powłoki użyj polecenia gemini code-repository-indexes create
:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
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 skonfigurowałeś/skonfigurowałaś w Developer Connect w projekcie Google Cloud.
Tworzenie indeksu zwykle trwa 30 minut, ale może potrwać do godziny.
Google ogranicza liczbę indeksów repozytorium kodu do 1 na projekt i organizację.
Zarządzanie dostępem do indeksu za pomocą grup repozytoriów
Grupa repozytorium to kontener konfiguracji indeksowania, który obejmuje repozytoria i ich wzorce gałęzi. Grupy repozytorium zostały zaprojektowane z myślą o dokładnej kontroli uprawnień, zapewniając deweloperom dostęp do zindeksowanych danych z tych grup, w których mają uprawnieniacloudaicompanion.repositoryGroups.use
.
Grupy repozytoriów zawierają repozytoria Developer Connect lub linki z tego samego projektu i lokalizacji.
Administratorzy mogą wykonywać te czynności:
- Utwórz zasób indeksu repozytorium kodu.
- W tym samym projekcie i w tej samej lokalizacji skonfiguruj nowe połączenie Developer Connect.
- Połącz repozytoria Git w ramach połączenia.
Pobierz nazwy zasobów linków, wybierz wzór gałęzi do zindeksowania dla każdego linku i umieść go w jednej lub wielu grupach repozytorium.
Aby utworzyć grupę repozytoriów, w środowisku powłoki użyj polecenia gemini code-repository-indexes repository-groups create
:
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 "}]'
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 repozytorium, na przykładdefault
.PROJECT_ID
: identyfikator Twojego projektu Google Cloud;REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który skonfigurowano w Developer Connect w projekcie Google Cloud.INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku tworzenia indeksu.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 odszukaj identyfikator połączenia w kolumnie Połączenie. 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 zindeksować, np.main|dev
.
Możesz też utworzyć grupę repozytoriów z repozytoriami zdefiniowanymi w pliku JSON (lub YAML) w takim formacie:
[
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "dev"
}
]
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
Aby utworzyć grupę repozytorium na podstawie pliku JSON lub YAML w środowisku powłoki, użyj polecenia gemini code-repository-indexes repository-groups create
:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH .json
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 nimi zarządzać za pomocą klucza szyfrowania zarządzanego przez klienta (CMEK) w usłudze Cloud Key Management Service. Więcej informacji o kluczu CMEK znajdziesz w artykule Szyfrowanie danych za pomocą kluczy szyfrowania zarządzanych przez klienta.
Przypisywanie roli uprawnień grupie repozytorium w projekcie
Otrzymasz tylko sugestie z reposytoriów w indeksie. Każde repozytorium należy do co najmniej 1 grupy repozytoriów. Aby uzyskać dostęp do sugestii, musisz przyznać grupie repozytorium rolę uprawnień użytkownika Cloud AI Companion Repository Groups (roles/cloudaicompanion.repositoryGroupsUser
), która zawiera wymagane uprawnienie uprawnień (cloudaicompanion.repositoryGroups.user
), w jeden z tych sposobów:
- przyznać administratorom uprawnienia do dostępu do całego indeksu.
- przyznać podmiotom zabezpieczeń dostęp do podzbioru indeksu.
Przyznawanie administratorom uprawnień do uzyskiwania dostępu do całego indeksu
Aby powiązać z projektem zasady uprawnień, w środowisku powłoki użyj polecenia
projects add-iam-policy-binding
: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 repozytorium.PRINCIPAL
: adres e-mail głównego konta, któremu potrzebny jest dostęp. Może to być na przykładuser:test-user@gmail.com
(w przypadku użytkownika indywidualnego) 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 repozytorium i przypisać role uprawnień do różnych podmiotów zabezpieczeń.
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 zezwalających.
Aby ustawić uprawnienia, w środowisku powłoki uruchom polecenie gemini code-repository-indexes repository-groups set-iam-policy
:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAME POLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
Zastąp następujące elementy:
GROUP_NAME
: nazwa grupy repozytorium utworzonej w poprzednim kroku, aby kontrolować dostęp do indeksu za pomocą grup repozytoriów.POLICY_FILE
: zasady uprawnień.REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który skonfigurowano w Developer Connect w Twoim projekcie Google Cloud.INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku tworzenia indeksu.Więcej informacji znajdziesz w sekcji
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
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ć:
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 repozytorium utworzonej w poprzednim kroku, aby kontrolować dostęp do indeksu za pomocą grup repozytoriów.REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który skonfigurowano w Developer Connect w Twoim projekcie Google Cloud.INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku tworzenia indeksu.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ć, oraz 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 wprowadza zmiany wprowadzone w repozytorium.
Wyszukaj dzienniki
indexing
. Więcej informacji znajdziesz w artykule Język zapytań dotyczących logów.W konsoli Google Cloud otwórz Eksplorator logów.
Aby wyświetlić
indexing
logi, użyj filtra nazw logów.
Aby wyszukać dzienniki indeksowania w środowisku powłoki, użyj polecenia
logging read
: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, takie jak:
- początek indeksowania repozytorium, np.
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
- Zakończenie 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ę:
- Zakończenie indeksowania repozytorium – na przykład:
- 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 sekcji 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.
Dostosowywanie kodu
Gdy skonfigurujesz dostosowywanie kodu, użytkownicy zaczną widzieć sugestie uzupełniania i generowania kodu, które mogą być oparte na prywatnym kodzie zindeksowanym przez Ciebie, a także na wynikach z całkowitej świadomości kodu źródłowego.
Wyłączanie dostosowywania kodu
Aby wyświetlić listę wszystkich grup repozytorium dla bieżącego indeksu w środowisku powłoki, użyj polecenia
gemini code-repository-indexes repository-groups list
:gcloud gemini code-repository-indexes repository-groups list --location=
REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uriZastąp następujące elementy:
REGION
: obsługiwany region, jak podano w sekcji Zanim zaczniesz na tej stronie, który skonfigurowano w Developer Connect w Twoim projekcie Google Cloud.PROJECT_ID
: identyfikator Twojego projektu Google Cloud;INDEX_NAME
: nazwa indeksu utworzonego w poprzednim kroku tworzenia indeksu.
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 repozytorium, aż usuniesz wszystkie grupy repozytorium z indeksu.
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: Tworzenie kodu za pomocą Gemini Code Assist
- Cloud Shell: programowanie z Gemini Code Assist
- Cloud Workstations: programowanie z Gemini Code Assist
- Dowiedz się, jak szyfrować dane za pomocą kluczy szyfrowania zarządzanych przez klienta (CMEK).
- Dowiedz się więcej o Developer Connect.
- Dowiedz się, jak i kiedy Gemini dla Google Cloud korzysta z Twoich danych.