В этом документе описывается, как настроить функцию настройки кода Gemini Code Assist , подключив Gemini Code Assist к вашим приватным репозиториям кода. Эта функция позволяет получать рекомендации по коду, основанные на внутренних библиотеках, приватных API и стиле кодирования вашей организации.
Прежде чем начать
- Настройте Gemini Code Assist с подпиской Enterprise .
- Создайте или настройте учётные записи конечных пользователей. Каждый разработчик в вашей организации, использующий Gemini Code Assist, должен иметь идентификацию пользователя в Google Cloud с разрешением на доступ к вашему проекту Google Cloud. Подробнее см. в статье «Предоставление ролей в консоли Google Cloud» . Убедитесь, что у каждого пользователя есть следующие роли:
Настройте Developer Connect , а затем подключитесь к своему репозиторию GitHub.com, GitLab.com или Bitbucket.org:
GitHub
GitLab
Битбакет
Кроме того, обратите внимание, что настройка кода поддерживает только соединения Developer Connect в следующих местах (регионах):
-
us-central1
-
europe-west1
-
asia-southeast1
В среде оболочки выполните команду
gcloud components update
чтобы убедиться, что все установленные компоненты gcloud обновлены до последней версии. Для этого вы можете установить и инициализировать gcloud или использовать Cloud Shell Editor .gcloud components update
Выберите, какие частные репозитории будут подключены
Рекомендуется подключать репозитории, которые:
- Создайте код, который по стилю и структуре похож на тот, который вы хотите, чтобы написали ваши разработчики.
- У вас есть частные библиотеки или API, которые вы хотели бы вызывать из текущей кодовой базы.
(Необязательно) Выберите, какие файлы не индексируются.
По умолчанию настройка кода индексирует все поддерживаемые файлы кода в указанных вами репозиториях.
Чтобы предотвратить раскрытие кода, который вы не хотите индексировать, вы можете использовать шаблоны ветвления для управления доступом к вашему индексу и использовать стабильную ветку, например main
.
Кроме того, вы также можете исключить файлы из индекса, создав файл .aiexclude
.
Создать индекс
Настройка кода основана на индексе для анализа и разбора вашего репозитория с целью более быстрой генерации предложений и поиска кода.
gcloud
Чтобы создать индекс, в среде оболочки используйте команду 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"
}
Заменить следующее:
-
INDEX_NAME
: имя вашего индекса. Важно : запишите имя вашего индекса. Оно понадобится вам на нескольких этапах этого документа. -
PROJECT_ID
: идентификатор вашего проекта Google Cloud. -
REGION
: поддерживаемый регион, как указано в разделе «Перед началом работы» на этой странице, который вы настроили в Developer Connect в своем проекте Google Cloud.
Создание индекса обычно занимает 30 минут, но может занять и час.
Google ограничивает количество индексов репозитория кода одним для каждого проекта и организации.
Управляйте доступом к вашему индексу с помощью групп репозитория
Группа репозиториев — это контейнер для конфигурации индексации, включающий репозитории и их шаблоны ветвления. Группы репозиториев предназначены для детального управления IAM, предоставляя разработчикам доступ к индексированным данным из этих групп при наличии разрешения cloudaicompanion.repositoryGroups.use
.
Группы репозиториев содержат репозитории Developer Connect или ссылки из одного проекта и местоположения.
Администраторы выполняют следующие действия:
- Создать ресурс индекса репозитория кода.
- В том же проекте и месте настройте новое подключение Developer Connect.
- Связать репозитории Git с подключением.
Получите имена ресурсов ссылок, выберите шаблон ветвления для индексации каждой ссылки и поместите ее в одну или несколько групп репозиториев.
gcloud
Чтобы создать группу репозиториев, в среде оболочки используйте команду 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"
}
}
Заменить следующее:
-
REPOSITORY_GROUP
: имя группы репозитория, например,default
. -
PROJECT_ID
: идентификатор вашего проекта Google Cloud. -
REGION
: поддерживаемый регион, как указано в разделе «Прежде чем начать» на этой странице, который вы настроили в Developer Connect в своем проекте Google Cloud. -
INDEX_NAME
: имя индекса, созданного на предыдущем шаге создания индекса . -
REPOSITORY_RESOURCE_NAME
: имя репозитория в подключении Developer Connect. Чтобы узнать имя репозитория, перейдите на страницу Developer Connect в консоли Google Cloud и на вкладке «Репозитории» найдите идентификатор подключения в столбце «Подключение » таблицы. Чтобы скопировать имя ресурса, откройте меню more_vert для просмотра дополнительных параметров и выберите «Копировать путь к ресурсу» . -
BRANCH_NAMES
: имена ветвей, которые вы хотите индексировать, напримерmain|dev
.
Вы также можете создать группу репозиториев с репозиториями, определенными в файле JSON (или YAML), отформатированном следующим образом:
JSON
[
{
"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
Чтобы создать группу репозиториев на основе файла JSON или YAML, в среде оболочки используйте команду 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
ЯМЛ
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
При желании вы можете шифровать и контролировать свои данные с помощью ключа шифрования, управляемого клиентом (CMEK), через службу управления облачными ключами . Подробнее об использовании CMEK см. в статье Шифрование данных с помощью ключей шифрования, управляемых клиентом .
Предоставить роль IAM группе репозитория в проекте
Вы получаете предложения только из репозиториев, указанных в индексе. Каждый репозиторий принадлежит одной или нескольким группам репозиториев. Для доступа к предложениям необходимо предоставить группе репозиториев IAM-роль пользователя групп репозиториев Cloud AI Companion ( roles/cloudaicompanion.repositoryGroupsUser
), которая содержит необходимое разрешение IAM cloudaicompanion.repositoryGroups.user
, одним из следующих способов:
- Предоставить принципалам разрешение на доступ ко всему индексу.
- Предоставить принципалам доступ к подмножеству индекса.
Предоставить принципалам разрешение на доступ ко всему индексу
Чтобы привязать политику IAM к проекту, в среде оболочки используйте команду
projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Заменить следующее:
-
PROJECT_ID
: идентификатор проекта, в котором расположена группа репозитория. -
PRINCIPAL
: адрес электронной почты принципала, которому необходим доступ, например,user:test-user@gmail.com
для отдельного лица илиgroup:admins@example.com
для группы.
Для получения дополнительной информации см.
gcloud projects set-iam-policy
.-
При появлении запроса на указание условия введите
None
.
Предоставить принципалам доступ к подмножеству индекса
Вы можете создать несколько групп репозиториев и назначить роли IAM разным субъектам IAM.
gcloud
Чтобы настроить IAM-политику, необходимо подготовить JSON- или YAML-файл IAM-политики, содержащий список IAM-групп и назначенных ролей. Например:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Дополнительные сведения и синтаксис см. в разделе Общие сведения о политиках разрешения .
Чтобы установить политику IAM, в среде оболочки используйте команду 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
Заменить следующее:
-
GROUP_NAME
: имя группы репозитория, созданной вами на предыдущем шаге, для управления доступом к индексу с помощью групп репозитория . -
POLICY_FILE
: политика IAM. -
REGION
: поддерживаемый регион, как указано в разделе «Перед началом работы» на этой странице, который вы настроили в Developer Connect в своем проекте Google Cloud. INDEX_NAME
: имя индекса, созданного вами на предыдущем шаге создания индекса .Для получения дополнительной информации см.
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
]
}
Вы также можете создать привязку:
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"]
}
Заменить следующее:
-
GROUP_NAME
: имя группы репозитория, созданной вами на предыдущем шаге, для управления доступом к индексу с помощью групп репозитория . -
REGION
: поддерживаемый регион, как указано в разделе «Перед началом работы» на этой странице, который вы настроили в Developer Connect в своем проекте Google Cloud. INDEX_NAME
: имя индекса, созданного вами на предыдущем шаге создания индекса .Для получения дополнительной информации см.
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Проверить статус индексации
В зависимости от количества и размера репозиториев, которые вы хотите индексировать, индексация контента может занять до 24 часов. Для больших репозиториев индексация может занять больше времени. Индексация происходит каждые 24 часа, отслеживая все изменения, внесённые в репозиторий.
Найдите журналы
indexing
. Подробнее см. в разделе «Язык запросов для журналирования» .Консоль
В консоли API Google перейдите в Logs Explorer .
Для просмотра журналов
indexing
используйте фильтр имен журналов.
gcloud
Для поиска журналов индексации в среде оболочки используйте команду
logging read
:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Замените
PROJECT_ID
на идентификатор проекта, в котором расположена группа репозитория.Например, чтобы просмотреть ошибки в журналах
indexing
, выполните следующую команду:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Проверьте соответствующие статусы индексации, например следующие:
- Начало индексации репозитория, например,
Indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 6, failed: 0.
- Конец индексации индивидуального репозитория — например:
- Успех:
Successfully finished indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 7, failed: 0.
- Ошибка:
Failed to index repository REPOSITORY_NAME . Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Успех:
- Конец индексации репозитория — например:
- Успех:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Ошибка:
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.
- Успех:
В статусах индекса
REPOSITORY_NAME
— это репозиторий, который вы хотите просмотреть.- Начало индексации репозитория, например,
Просмотрите сопутствующие ошибки индексации, например следующие:
- Не удалось загрузить репозиторий.
- Не удалось составить список файлов репозитория.
- Не удалось получить информацию о репозитории из индекса.
- Не удалось извлечь файлы из индекса.
- Внутренняя ошибка.
Использовать настройку кода
После настройки настройки кода вы начнете видеть предложения по дополнению и генерации кода, которые могут быть основаны на проиндексированном вами частном коде, а также на результатах полной осведомленности о кодовой базе.
Дополнительную информацию об использовании настройки кода и передовых методах см. в разделе Использование настройки кода .
Отключить настройку кода
Чтобы вывести список всех групп репозиториев для текущего индекса, в среде оболочки используйте команду
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 --uri
Заменить следующее:
-
REGION
: поддерживаемый регион, как указано в разделе «Перед началом работы» на этой странице, который вы настроили в Developer Connect в своем проекте Google Cloud. -
PROJECT_ID
: идентификатор вашего проекта Google Cloud. -
INDEX_NAME
: имя индекса, созданного на предыдущем шаге создания индекса .
-
Чтобы удалить группу репозиториев из текущего индекса, используйте команду
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
Повторяйте шаг 3 для каждой группы репозиториев, пока не удалите все группы репозиториев из индекса.
Необязательно: чтобы удалить индекс, в среде оболочки используйте команду
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Что дальше?
- Начните использовать Gemini Code Assist:
- VS Code, IntelliJ и другие поддерживаемые JetBrains IDE: программируйте с помощью Gemini Code Assist
- Cloud Shell: программирование с помощью Gemini Code Assist
- Облачные рабочие станции: программируйте с Gemini Code Assist
- Узнайте, как использовать настройку кода и передовые практики.
- Узнайте, как шифровать данные с помощью ключей шифрования, управляемых клиентом (CMEK) .
- Узнайте больше о Developer Connect .
- Узнайте , как и когда Gemini для Google Cloud использует ваши данные .