Ce document explique comment configurer la personnalisation du code Gemini Code Assist en connectant Gemini Code Assist à vos dépôts de code privés. Cette fonctionnalité vous permet de recevoir des recommandations de code basées sur les bibliothèques internes, les API privées et le style de codage de votre organisation.
Avant de commencer
- Configurez Gemini Code Assist avec un abonnement Enterprise.
- Créez ou configurez des comptes utilisateur finaux. Chaque développeur de votre organisation qui utilise Gemini Code Assist doit disposer d'une identité utilisateur dansGoogle Cloud et être autorisé à accéder à votre projet Google Cloud . Pour en savoir plus, consultez Attribuer des rôles dans la console Google Cloud . Assurez-vous que chaque utilisateur dispose des rôles suivants :
Configurez Developer Connect, puis connectez-vous à votre dépôt GitHub.com, GitLab.com ou Bitbucket.org :
GitHub
GitLab
Bitbucket
Notez également que la personnalisation du code n'est compatible qu'avec les connexions Developer Connect dans les régions suivantes :
us-central1
europe-west1
asia-southeast1
Dans un environnement shell, exécutez la commande
gcloud components update
pour vous assurer d'avoir mis à jour tous les composants installés de la gcloud CLI vers la dernière version. Pour cette étape, vous pouvez installer et initialiser gcloud CLI, ou utiliser l'éditeur Cloud Shell.gcloud components update
Choisir les dépôts privés à connecter
Nous vous recommandons de connecter des dépôts qui :
- Avoir un code dont le style ou la structure sont similaires à ceux que vous souhaitez que vos développeurs écrivent.
- Vous disposez de bibliothèques ou d'API privées que vous souhaitez appeler à partir de votre codebase actuelle.
(Facultatif) Choisissez les fichiers qui ne doivent pas être indexés.
Par défaut, la personnalisation du code indexe tous les fichiers de code compatibles dans les dépôts que vous avez spécifiés.
Pour éviter d'exposer du code que vous ne souhaitez pas indexer, vous pouvez utiliser des modèles de branche pour contrôler l'accès à votre index et utiliser une branche stable, telle que main
.
Vous pouvez également exclure des fichiers de l'index en créant un fichier .aiexclude
.
Créer un index
La personnalisation du code s'appuie sur un index pour analyser votre dépôt afin de générer des suggestions de code et des recherches plus rapidement.
CLI gcloud
Pour créer l'index, dans un environnement shell, utilisez la commande gemini code-repository-indexes create
:
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"
}
Remplacez les éléments suivants :
INDEX_NAME
: nom de votre index. Important : Notez le nom de votre index. Vous en aurez besoin à plusieurs étapes de ce document.PROJECT_ID
: ID de votre projet Google Cloud .REGION
: région acceptée, comme indiqué dans la section Avant de commencer de cette page, que vous avez configurée dans Developer Connect dans votre projet Google Cloud.
La création d'un index prend généralement 30 minutes, mais peut durer jusqu'à une heure.
Google limite le nombre d'index de dépôt de code à un par projet et par organisation.
Contrôler l'accès à votre index à l'aide de groupes de dépôts
Un groupe de dépôts est un conteneur pour la configuration de l'indexation, qui inclut les dépôts et leurs modèles de branche. Les groupes de dépôts sont conçus pour un contrôle IAM précis. Ils permettent aux développeurs d'accéder aux données indexées de ces groupes, où ils disposent de l'autorisation cloudaicompanion.repositoryGroups.use
.
Les groupes de dépôts contiennent des dépôts ou des liens Developer Connect provenant du même projet et du même emplacement.
Les administrateurs effectuent les actions suivantes :
- Créez une ressource d'index de dépôt de code.
- Dans le même projet et au même emplacement, configurez une connexion Developer Connect.
- Associez des dépôts Git dans la connexion.
Obtenez les noms de ressources des liens, choisissez le modèle de branche à indexer pour chaque lien et placez-le dans un ou plusieurs groupes de dépôts.
CLI gcloud
Pour créer un groupe de dépôts dans un environnement shell, utilisez la commande 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"}]'
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"
}
}
Remplacez les éléments suivants :
REPOSITORY_GROUP
: nom du groupe de dépôts, tel quedefault
.PROJECT_ID
: ID de votre projet Google Cloud .REGION
: région acceptée, comme indiqué dans la section Avant de commencer de cette page, que vous avez configurée dans Developer Connect dans votre projet Google Cloud.INDEX_NAME
: nom de l'index que vous avez créé à l'étape précédente pour créer un index.REPOSITORY_RESOURCE_NAME
: nom du dépôt dans la connexion Developer Connect. Pour trouver le nom du dépôt, accédez à la page Developer Connect dans la console Google Cloud , puis, dans l'onglet Dépôts, recherchez l'ID de connexion sous la colonne Connexion du tableau. Pour copier le nom de la ressource, cliquez sur le menu more_vert pour afficher plus d'options, puis sélectionnez Copier le chemin d'accès à la ressource.BRANCH_NAMES
: nom des branches que vous souhaitez indexer, par exemplemain|dev
.
Vous pouvez également créer un groupe de dépôts avec des dépôts définis dans un fichier JSON (ou YAML), au format suivant :
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
Pour créer un groupe de dépôts à partir d'un fichier JSON ou YAML, utilisez la commande gemini code-repository-indexes repository-groups create
dans un environnement shell :
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
Si vous le préférez, vous pouvez chiffrer et contrôler vos données avec une clé de chiffrement gérée par le client (CMEK) via Cloud Key Management Service. Pour en savoir plus sur l'utilisation d'une CMEK, consultez Chiffrer les données avec des clés de chiffrement gérées par le client.
Attribuer un rôle IAM au groupe de dépôts dans un projet
Vous ne recevez que des suggestions provenant de dépôts figurant dans l'index. Chaque dépôt appartient à un ou plusieurs groupes de dépôts. Pour accéder aux suggestions, vous devez accorder le rôle IAM Utilisateur des groupes de dépôts Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser
), qui contient l'autorisation IAM cloudaicompanion.repositoryGroups.user
requise, au groupe de dépôts de l'une des manières suivantes :
- Accorder aux comptes principaux l'autorisation d'accéder à l'intégralité de l'index.
- Accorder aux comptes principaux l'accès à un sous-ensemble de l'index.
Accorder aux comptes principaux l'autorisation d'accéder à l'intégralité de l'index
Pour associer une stratégie IAM à un projet dans un environnement shell, utilisez la commande
projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel se trouve le groupe de dépôts.PRINCIPAL
: adresse e-mail du compte principal ayant besoin d'un accès (par exemple,user:test-user@gmail.com
pour un utilisateur individuel ougroup:admins@example.com
pour un groupe).
Pour en savoir plus, consultez les sections sur
gcloud projects set-iam-policy
Lorsque vous êtes invité à spécifier une condition, saisissez
None
.
Accorder aux comptes principaux l'accès à un sous-ensemble de l'index
Vous pouvez créer plusieurs groupes de dépôts et attribuer des rôles IAM à différents principaux IAM.
CLI gcloud
Pour configurer une stratégie IAM, vous devez préparer le fichier JSON ou YAML de la stratégie IAM, qui contiendra une liste de groupes IAM et de rôles attribués. Exemple :
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Pour en savoir plus et connaître la syntaxe, consultez Comprendre les stratégies d'autorisation.
Pour définir la stratégie IAM dans un environnement shell, utilisez la commande 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
Remplacez les éléments suivants :
GROUP_NAME
: nom du groupe de dépôts que vous avez créé lors d'une étape précédente pour contrôler l'accès à votre index à l'aide de groupes de dépôts.POLICY_FILE
: stratégie IAM.REGION
: région acceptée, comme indiqué dans la section Avant de commencer de cette page, que vous avez configurée dans Developer Connect dans votre projetGoogle Cloud .INDEX_NAME
: nom de l'index que vous avez créé à l'étape précédente pour créer un index.Pour en savoir plus, consultez les sections sur
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
]
}
Vous pouvez également créer une liaison :
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"]
}
Remplacez les éléments suivants :
GROUP_NAME
: nom du groupe de dépôts que vous avez créé lors d'une étape précédente pour contrôler l'accès à votre index à l'aide de groupes de dépôts.REGION
: région acceptée, comme indiqué dans la section Avant de commencer de cette page, que vous avez configurée dans Developer Connect dans votre projetGoogle Cloud .INDEX_NAME
: nom de l'index que vous avez créé à l'étape précédente pour créer un index.Pour en savoir plus, consultez les sections sur
gcloud gemini code-repository-indexes repository-groups set-iam-policy
Vérifier l'état de l'indexation
Selon le nombre de dépôts que vous souhaitez indexer et leur taille, l'indexation du contenu peut prendre jusqu'à 24 heures. Pour les dépôts volumineux, l'indexation peut prendre plus de temps. L'indexation a lieu une fois toutes les 24 heures et prend en compte toutes les modifications apportées au dépôt.
Recherchez les journaux
indexing
. Pour en savoir plus, consultez la page Langage de requête Logging.Console
Dans la console Google Cloud , accédez à l'explorateur de journaux.
Utilisez le filtre "Noms des journaux" pour afficher les journaux
indexing
.
CLI gcloud
Pour rechercher les journaux d'indexation dans un environnement shell, utilisez la commande
logging read
:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Remplacez
PROJECT_ID
par l'ID du projet dans lequel se trouve le groupe de dépôts.Par exemple, pour afficher les erreurs dans les journaux
indexing
, exécutez la commande suivante :gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Examinez les états d'indexation associés, tels que les suivants :
- Début de l'indexation du dépôt (par exemple,
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
) - Fin de l'indexation d'un dépôt individuel, par exemple :
- Opération réussie :
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Échec :
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Opération réussie :
- Fin de l'indexation du dépôt (exemple) :
- Opération réussie :
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Échec :
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.
- Opération réussie :
Dans les états d'index,
REPOSITORY_NAME
correspond au dépôt que vous souhaitez examiner.- Début de l'indexation du dépôt (par exemple,
Examinez les erreurs d'indexation associées, par exemple :
- Échec de la récupération du dépôt.
- Échec de la création de la liste des fichiers du dépôt.
- Échec de la récupération des informations du dépôt à partir de l'index.
- Échec de la récupération des fichiers à partir de l'index.
- Erreur interne.
Utiliser la personnalisation du code
Une fois la personnalisation du code configurée, vous commencerez à voir des suggestions de complétion et de génération de code. Elles peuvent être basées sur du code privé que vous avez indexé, en plus des résultats issus de la connaissance complète de la codebase.
Pour en savoir plus sur l'utilisation de la personnalisation du code et sur les bonnes pratiques, consultez Utiliser la personnalisation du code.
Désactiver la personnalisation du code
Pour lister tous les groupes de dépôts de l'index actuel dans un environnement shell, utilisez la commande
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
Remplacez les éléments suivants :
REGION
: région acceptée, comme indiqué dans la section Avant de commencer de cette page, que vous avez configurée dans Developer Connect dans votre projetGoogle Cloud .PROJECT_ID
: ID de votre projet Google Cloud .INDEX_NAME
: nom de l'index que vous avez créé à l'étape précédente pour créer un index.
Pour supprimer un groupe de dépôts de l'index actuel, utilisez la commande
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
Répétez l'étape 3 pour chaque groupe de dépôts jusqu'à ce que vous ayez supprimé tous les groupes de dépôts de l'index.
Facultatif : Pour supprimer l'index, dans un environnement shell, utilisez la commande
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Étapes suivantes
- Commencer à utiliser Gemini Code Assist :
- VS Code, IntelliJ et autres IDE JetBrains compatibles : coder avec Gemini Code Assist
- Éditeur Cloud Shell : Coder avec Gemini Code Assist
- Cloud Workstations : Coder avec Gemini Code Assist
- Découvrez comment personnaliser le code et les bonnes pratiques à suivre.
- Découvrez comment chiffrer des données avec des clés de chiffrement gérées par le client (CMEK).
- En savoir plus sur Developer Connect
- Découvrez comment et quand Gemini pour Google Cloud utilise vos données.