В этом документе описывается, как настроить настройку кода 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 и на вкладке Repositories найдите Connection ID в столбце Connection в таблице. Чтобы скопировать имя ресурса, щелкните меню more_vert для получения дополнительных параметров и выберите Copy resource path . -
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) через Cloud Key Management Service . Чтобы узнать больше об использовании CMEK, см. Шифрование данных с помощью управляемых клиентом ключей шифрования .
Предоставить роль IAM группе репозитория в проекте
Вы получаете предложения только из репозиториев в индексе. Каждый репозиторий принадлежит к одной или нескольким группам репозиториев. Чтобы получить доступ к предложениям, необходимо предоставить роль IAM пользователя Cloud AI Companion Repository Groups ( 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 использует ваши данные .