Mengonfigurasi penyesuaian kode Gemini Code Assist

Dokumen ini menjelaskan cara menyiapkan penyesuaian kode Gemini Code Assist dengan menghubungkan Gemini Code Assist ke repositori kode pribadi Anda. Fitur ini memungkinkan Anda menerima rekomendasi kode, yang diambil dari library internal, API pribadi, dan gaya coding organisasi Anda.

Sebelum memulai

Memilih repositori pribadi yang terhubung

Sebagai praktik terbaik, pastikan Anda menghubungkan repositori yang:

  • Memiliki kode dengan gaya atau struktur yang serupa dengan yang Anda inginkan untuk ditulis oleh developer Anda.
  • Memiliki library atau API pribadi yang ingin Anda panggil dari codebase saat ini.

(Opsional) Memilih file yang tidak diindeks

Secara default, penyesuaian kode mengindeks semua file kode yang didukung di repositori yang Anda tentukan.

Untuk mencegah tereksposnya kode yang tidak ingin Anda indeks, Anda dapat menggunakan pola cabang untuk mengontrol akses ke indeks Anda dan menggunakan cabang yang stabil, seperti main.

Atau, Anda juga dapat mengecualikan file dari indeks dengan membuat file .aiexclude.

Membuat indeks

Penyesuaian kode mengandalkan indeks untuk menganalisis dan mengurai repositori Anda guna memberikan saran dan pencarian pembuatan kode yang lebih cepat.

gcloud CLI

Untuk membuat indeks, di lingkungan shell, gunakan perintah 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"
}

Ganti kode berikut:

  • INDEX_NAME: nama indeks Anda. Penting: Catat nama indeks Anda. Anda akan membutuhkannya untuk beberapa langkah dalam dokumen ini.
  • PROJECT_ID: ID project Google Cloud Anda.
  • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasi di Developer Connect di project Google Cloud Anda.

Pembuatan indeks umumnya memerlukan waktu 30 menit untuk selesai, tetapi mungkin memerlukan waktu hingga satu jam.

Google membatasi jumlah indeks repositori kode menjadi satu untuk setiap project dan organisasi.

Mengontrol akses ke indeks Anda menggunakan grup repositori

Grup repositori adalah penampung untuk konfigurasi pengindeksan, yang mencakup repositori dan pola cabangnya. Grup repositori dirancang untuk kontrol IAM terperinci, yang memberikan akses developer ke data yang diindeks dari grup tersebut, tempat mereka memiliki izin cloudaicompanion.repositoryGroups.use.

Grup repositori berisi repositori Developer Connect, atau link, dari project dan lokasi yang sama.

Administrator melakukan tindakan berikut:

  • Buat resource Indeks Repositori Kode.
  • Di project dan lokasi yang sama, konfigurasi koneksi Developer Connect baru.
  • Tautkan repositori Git dalam koneksi.
  • Dapatkan nama resource link, pilih pola cabang untuk mengindeks setiap link, dan masukkan ke satu atau beberapa grup repositori.

gcloud CLI

Untuk membuat grup repositori, di lingkungan shell, gunakan perintah 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"
  }
}

Ganti kode berikut:

  • REPOSITORY_GROUP: nama grup repositori, seperti default.
  • PROJECT_ID: ID project Google Cloud Anda.
  • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasi di Developer Connect di project Google Cloud Anda.
  • INDEX_NAME: nama indeks yang Anda buat di langkah sebelumnya untuk membuat indeks.
  • REPOSITORY_RESOURCE_NAME: nama repositori di dalam koneksi Developer Connect. Untuk menemukan nama repositori, buka halaman Developer Connect di konsol Google Cloud , lalu di tab Repositories, cari ID Koneksi di kolom Connection dalam tabel. Untuk menyalin nama resource, klik menu more_vert untuk opsi lainnya, lalu pilih Salin jalur resource.
  • BRANCH_NAMES: nama cabang yang ingin Anda indeks, seperti main|dev.

Anda juga dapat membuat grup repositori dengan repositori yang ditentukan dalam file JSON (atau YAML), yang diformat sebagai berikut:

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

Untuk membuat grup repositori berdasarkan file JSON atau YAML, di lingkungan shell, gunakan perintah 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

YAML

gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories=FILEPATH.yaml

Jika mau, Anda dapat mengenkripsi dan mengontrol data Anda dengan kunci enkripsi yang dikelola pelanggan (CMEK) melalui Cloud Key Management Service. Untuk mempelajari lebih lanjut cara menggunakan CMEK, lihat Mengenkripsi data dengan kunci enkripsi yang dikelola pelanggan.

Memberikan peran IAM ke grup repositori di project

Anda hanya menerima saran dari repositori dalam indeks. Setiap repositori termasuk dalam satu atau beberapa grup repositori. Untuk mengakses saran, Anda harus memberikan peran IAM Cloud AI Companion Repository Groups User (roles/cloudaicompanion.repositoryGroupsUser)—yang berisi izin IAM cloudaicompanion.repositoryGroups.user yang diperlukan—ke grup repositori dengan salah satu cara berikut:

  • Memberi pokok izin untuk mengakses seluruh indeks.
  • Memberikan akses utama ke subset indeks.

Memberi pokok izin untuk mengakses seluruh indeks

  1. Untuk mengikat kebijakan IAM untuk project, di lingkungan shell, gunakan perintah projects add-iam-policy-binding:

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

    Ganti kode berikut:

    • PROJECT_ID: project ID tempat grup repositori berada.
    • PRINCIPAL: alamat email kepala sekolah yang memerlukan akses—misalnya, user:test-user@gmail.com untuk individu, atau group:admins@example.com untuk grup.

    Untuk informasi selengkapnya, lihat gcloud projects set-iam-policy.

  2. Saat diminta untuk menentukan kondisi, masukkan None.

Memberikan akses utama ke subset indeks

Anda dapat membuat beberapa grup repositori dan menetapkan peran IAM ke akun utama IAM yang berbeda.

gcloud CLI

Untuk menyiapkan kebijakan IAM, Anda harus menyiapkan file JSON atau YAML kebijakan IAM, yang akan berisi daftar grup IAM dan peran yang ditetapkan. Contoh:

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

Untuk mengetahui detail dan sintaksis tambahan, lihat Memahami kebijakan izin.

Untuk menetapkan kebijakan IAM, di lingkungan shell, gunakan perintah 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

Ganti kode berikut:

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

Anda juga dapat membuat binding:

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

Ganti kode berikut:

Memeriksa status pengindeksan

Bergantung pada jumlah repositori yang ingin Anda indeks dan ukurannya, pengindeksan konten dapat memerlukan waktu hingga 24 jam. Untuk repositori besar, pengindeksan dapat memerlukan waktu lebih lama. Pengindeksan terjadi sekali setiap 24 jam, mengambil perubahan apa pun yang dilakukan di repositori.

  1. Telusuri log indexing. Untuk mengetahui informasi selengkapnya, lihat Bahasa kueri logging.

    Konsol

    1. Di konsol Google Cloud , buka Logs Explorer.

      Buka Logs Explorer

    2. Gunakan filter nama log untuk melihat log indexing.

    gcloud CLI

    Untuk menelusuri log pengindeksan, di lingkungan shell, gunakan perintah logging read:

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

    Ganti PROJECT_ID dengan project ID tempat grup repositori berada.

    Misalnya, untuk melihat error di log indexing, jalankan perintah berikut:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. Tinjau status pengindeksan terkait, seperti berikut:

    • Awal pengindeksan repositori, misalnya, Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Akhir pengindeksan repositori individual, misalnya:
      • Berhasil: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Gagal: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Akhir pengindeksan repositori-misalnya:
      • Berhasil: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Gagal: 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.

    Di status indeks, REPOSITORY_NAME adalah repositori yang ingin Anda tinjau.

  3. Tinjau error pengindeksan terkait, seperti berikut:

    • Gagal mengambil repositori.
    • Gagal mencantumkan file repositori.
    • Gagal mengambil informasi repositori dari indeks.
    • Gagal mengambil file dari indeks.
    • Error internal.

Menggunakan penyesuaian kode

Setelah menyiapkan penyesuaian kode, Anda akan mulai melihat saran penyelesaian kode dan pembuatan kode yang mungkin didasarkan pada kode pribadi yang telah Anda indeks, selain hasil dari pengetahuan codebase lengkap.

Untuk mempelajari lebih lanjut cara menggunakan penyesuaian kode dan praktik terbaik, lihat Menggunakan penyesuaian kode.

Menonaktifkan penyesuaian kode

  1. Untuk mencantumkan semua grup repositori untuk indeks saat ini, di lingkungan shell, gunakan perintah 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
    

    Ganti kode berikut:

    • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasi di Developer Connect di projectGoogle Cloud Anda.
    • PROJECT_ID: ID project Google Cloud Anda.
    • INDEX_NAME: nama indeks yang Anda buat di langkah sebelumnya untuk membuat indeks.
  2. Untuk menghapus grup repositori dari indeks saat ini, gunakan perintah 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. Ulangi langkah 3 untuk setiap grup repositori hingga Anda menghapus semua grup repositori dari indeks.

  4. Opsional: Untuk menghapus indeks, di lingkungan shell, gunakan perintah gemini code-repository-indexes delete:

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

Langkah berikutnya