Codeanpassung für Gemini Code Assist konfigurieren

In diesem Dokument wird beschrieben, wie Sie die Codeanpassung in Gemini Code Assist einrichten, indem Sie Gemini Code Assist mit Ihren privaten Code-Repositories verbinden. Mit dieser Funktion können Sie Code-Empfehlungen erhalten, die auf den internen Bibliotheken, privaten APIs und dem Codierungsstil Ihrer Organisation basieren.

Hinweise

Auswählen, welche privaten Repositories verbunden werden

Als Best Practice sollten Sie nur Repositories verbinden, die

  • Code, der dem Stil oder der Struktur ähnelt, die Sie von Ihren Entwicklern erwarten.
  • Sie haben private Bibliotheken oder APIs, die Sie aus Ihrer aktuellen Codebasis aufrufen möchten.

Optional: Auswählen, welche Dateien nicht indexiert werden sollen

Standardmäßig werden bei der Codeanpassung alle unterstützten Codedateien in den von Ihnen angegebenen Repositories indexiert.

Um zu verhindern, dass Code, den Sie nicht indexieren möchten, offengelegt wird, können Sie Branchmuster verwenden, um den Zugriff auf Ihren Index zu steuern, und einen stabilen Branch wie main verwenden.

Alternativ können Sie Dateien auch aus dem Index ausschließen, indem Sie eine .aiexclude-Datei erstellen.

Index erstellen

Die Codeanpassung verwendet einen Index, um Ihr Repository zu analysieren und zu parsen und so schneller Vorschläge für die Codegenerierung und Suchvorgänge bereitzustellen.

gcloud-CLI

Verwenden Sie den Befehl gemini code-repository-indexes create, um den Index in einer Shell-Umgebung zu erstellen:

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"
}

Ersetzen Sie Folgendes:

  • INDEX_NAME: Ihr Indexname. Wichtig: Notieren Sie sich den Namen des Index. Sie benötigen sie für mehrere Schritte in diesem Dokument.
  • PROJECT_ID: Ihre Google Cloud -Projekt-ID.
  • REGION: Eine unterstützte Region, wie im Abschnitt Vorbereitung auf dieser Seite beschrieben, die Sie in Developer Connect in Ihrem Google Cloud-Projekt konfiguriert haben.

Die Indexerstellung dauert in der Regel 30 Minuten, kann aber auch bis zu einer Stunde in Anspruch nehmen.

Google beschränkt die Anzahl der Code-Repository-Indizes auf einen pro Projekt und Organisation.

Zugriff auf Ihren Index mit Repository-Gruppen steuern

Eine Repository-Gruppe ist ein Container für die Indexierungskonfiguration, der Repositorys und ihre Branch-Muster enthält. Repository-Gruppen sind für die detaillierte IAM-Steuerung konzipiert. Entwickler erhalten Zugriff auf die indexierten Daten aus diesen Gruppen, sofern sie die Berechtigung cloudaicompanion.repositoryGroups.use haben.

Repository-Gruppen enthalten Developer Connect-Repositories oder Links aus demselben Projekt und vom selben Standort.

Administratoren führen die folgenden Aktionen aus:

  • Erstellen Sie eine Code-Repository-Indexressource.
  • Konfigurieren Sie im selben Projekt und am selben Standort eine neue Developer Connect-Verbindung.
  • Git-Repositories in der Verbindung verknüpfen
  • Ressourcennamen von Links abrufen, für jeden Link ein zu indexierendes Branch-Muster auswählen und in eine oder mehrere Repository-Gruppen einfügen.

gcloud-CLI

Verwenden Sie zum Erstellen einer Repository-Gruppe in einer Shell-Umgebung den Befehl 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"
  }
}

Ersetzen Sie Folgendes:

  • REPOSITORY_GROUP: Name der Repository-Gruppe, z. B. default.
  • PROJECT_ID: Ihre Google Cloud -Projekt-ID.
  • REGION: Eine unterstützte Region, wie im Abschnitt Vorbereitung auf dieser Seite beschrieben, die Sie in Developer Connect in Ihrem Google Cloud-Projekt konfiguriert haben.
  • INDEX_NAME: Name des Index, den Sie in einem vorherigen Schritt zum Erstellen eines Index erstellt haben.
  • REPOSITORY_RESOURCE_NAME: Name des Repositorys in der Developer Connect-Verbindung. Den Namen des Repositorys finden Sie in der Developer Connect-Seite in der Google Cloud -Konsole. Suchen Sie auf dem Tab Repositories in der Tabelle in der Spalte Verbindung nach der Verbindungs-ID. Klicken Sie zum Kopieren des Ressourcennamens auf das more_vert und wählen Sie Ressourcenpfad kopieren aus.
  • BRANCH_NAMES: Name der Zweige, die indexiert werden sollen, z. B. main|dev.

Sie können auch eine Repository-Gruppe mit Repositorys erstellen, die in einer JSON- oder YAML-Datei definiert sind. Die Datei muss so formatiert sein:

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

So erstellen Sie eine Repository-Gruppe auf Grundlage einer JSON- oder YAML-Datei in einer Shell-Umgebung mit dem gemini code-repository-indexes repository-groups create-Befehl:

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

Sie können Ihre Daten auch mit einem vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) über Cloud Key Management Service verschlüsseln und verwalten. Weitere Informationen zur Verwendung von CMEK finden Sie unter Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln verschlüsseln.

Der Repository-Gruppe in einem Projekt eine IAM-Rolle zuweisen

Sie erhalten nur Vorschläge aus Repositories im Index. Jedes Repository gehört zu einer oder mehreren Repository-Gruppen. Damit Sie auf Vorschläge zugreifen können, müssen Sie der Repository-Gruppe die IAM-Rolle „Cloud AI Companion Repository Groups User“ (roles/cloudaicompanion.repositoryGroupsUser) zuweisen. Diese enthält die erforderliche IAM-Berechtigung cloudaicompanion.repositoryGroups.user. Das kann auf eine der folgenden Arten erfolgen:

  • Hauptkonten die Berechtigung zum Zugriff auf den gesamten Index gewähren
  • Hauptkonten Zugriff auf eine Teilmenge des Index gewähren

Berechtigung für Zugriff auf den gesamten Index erteilen

  1. Verwenden Sie den projects add-iam-policy-binding-Befehl, um eine IAM-Richtlinie für ein Projekt in einer Shell-Umgebung zu binden:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member='PRINCIPAL' \
        --role='roles/cloudaicompanion.repositoryGroupsUser'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID des Projekts, in dem sich die Repository-Gruppe befindet.
    • PRINCIPAL: Die E-Mail-Adresse des Hauptkontos, das Zugriff benötigt, z. B. user:test-user@gmail.com für eine Einzelperson oder group:admins@example.com für eine Gruppe.

    Weitere Informationen finden Sie unter gcloud projects set-iam-policy.

  2. Wenn Sie aufgefordert werden, eine Bedingung anzugeben, geben Sie None ein.

Hauptkonten Zugriff auf eine Teilmenge des Index gewähren

Sie können mehrere Repository-Gruppen erstellen und verschiedenen IAM-Hauptkonten IAM-Rollen zuweisen.

gcloud-CLI

Um eine IAM-Richtlinie einzurichten, müssen Sie die JSON- oder YAML-Datei für die IAM-Richtlinie vorbereiten. Sie enthält eine Liste mit IAM-Gruppen und zugewiesenen Rollen. Beispiel:

bindings:
- members:
  - group:my-group@example.com
  - user:test-user@example.com
  role: roles/cloudaicompanion.repositoryGroupsUser

Weitere Informationen und die Syntax finden Sie unter „allow”-Richtlinien.

Verwenden Sie zum Festlegen der IAM-Richtlinie in einer Shell-Umgebung den Befehl 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

Ersetzen Sie Folgendes:

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
  ]
}

Sie können auch eine Bindung erstellen:

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"]
}

Ersetzen Sie Folgendes:

Indexierungsstatus prüfen

Je nach Anzahl der zu indexierenden Repositories und deren Größe kann das Indexieren von Inhalten bis zu 24 Stunden dauern. Bei großen Repositories kann die Indexierung länger dauern. Die Indexierung erfolgt einmal alle 24 Stunden und berücksichtigt alle Änderungen, die im Repository vorgenommen wurden.

  1. Suchen Sie nach den indexing-Logs. Weitere Informationen finden Sie unter Logging-Abfragesprache.

    Console

    1. Rufen Sie in der Google Cloud Console den Log-Explorer auf.

      Zum Log-Explorer

    2. Verwenden Sie den Filter für Log-Namen, um indexing-Logs aufzurufen.

    gcloud-CLI

    Verwenden Sie in einer Shell-Umgebung den logging read-Befehl, um nach den Indexierungsprotokollen zu suchen:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID, in der sich die Repository-Gruppe befindet.

    Wenn Sie beispielsweise Fehler in den indexing-Logs ansehen möchten, führen Sie den folgenden Befehl aus:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. Sehen Sie sich die zugehörigen Indexierungsstatus an, z. B.:

    • Beginn der Repository-Indexierung, z. B. Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Ende der Indexierung einzelner Repositorys, z. B.:
      • Erfolgreich: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Fehler: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Ende der Repository-Indexierung, z. B.:
      • Erfolgreich: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Fehler: 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.

    In den Indexstatus ist REPOSITORY_NAME das Repository, das Sie prüfen möchten.

  3. Sehen Sie sich die zugehörigen Indexierungsfehler an, z. B.:

    • Repository konnte nicht abgerufen werden.
    • Repository-Dateien konnten nicht aufgelistet werden.
    • Repository-Informationen konnten nicht aus dem Index abgerufen werden.
    • Dateien konnten nicht aus dem Index abgerufen werden.
    • Interner Fehler.

Codeanpassung verwenden

Nachdem Sie die Codeanpassung eingerichtet haben, werden Ihnen Vorschläge für die Vervollständigung und Generierung von Code angezeigt, die möglicherweise auf privatem Code basieren, den Sie zusätzlich zu Ergebnissen aus der vollständigen Codebasis indexiert haben.

Weitere Informationen zur Verwendung von Codeanpassungen und zu Best Practices finden Sie unter Codeanpassung verwenden.

Codeanpassung deaktivieren

  1. Verwenden Sie den gemini code-repository-indexes repository-groups list-Befehl, um alle Repository-Gruppen für den aktuellen Index in einer Shell-Umgebung aufzulisten:

    gcloud gemini code-repository-indexes repository-groups list --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME --uri
    

    Ersetzen Sie Folgendes:

    • REGION: Eine unterstützte Region, wie im Abschnitt Vorbereitung auf dieser Seite beschrieben, die Sie in Developer Connect in IhremGoogle Cloud -Projekt konfiguriert haben.
    • PROJECT_ID: Ihre Google Cloud -Projekt-ID.
    • INDEX_NAME: Name des Index, den Sie in einem vorherigen Schritt zum Erstellen eines Index erstellt haben.
  2. Verwenden Sie den gemini code-repository-indexes repository-groups delete-Befehl, um eine Repository-Gruppe aus dem aktuellen Index zu löschen:

    gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \
        --location=REGION \
        --project=PROJECT_ID \
        --code-repository-index=INDEX_NAME
    
  3. Wiederholen Sie Schritt 3 für jede Repository-Gruppe, bis Sie alle Repository-Gruppen aus dem Index gelöscht haben.

  4. Optional: Wenn Sie den Index löschen möchten, verwenden Sie in einer Shell-Umgebung den Befehl gemini code-repository-indexes delete:

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

Nächste Schritte