Bu belgede, Gemini Code Assist'i özel kod depolarınıza bağlayarak Gemini Code Assist kod özelleştirmesinin nasıl ayarlanacağı açıklanmaktadır. Bu özellik, kuruluşunuzun dahili kitaplıklarından, özel API'lerinden ve kodlama stilinden yararlanan kod önerileri almanızı sağlar.
Başlamadan önce
- Enterprise aboneliği ile Gemini Code Assist'i ayarlayın.
- Son kullanıcı hesapları oluşturun veya yapılandırın. Kuruluşunuzda Gemini Code Assist'i kullanan her geliştiricinin, Google Cloud projenize erişme izni olan bir Google Cloud kullanıcı kimliği olmalıdır. Daha fazla bilgi için Google Cloud Console'da rol verme başlıklı makaleyi inceleyin. Her kullanıcının aşağıdaki rollere sahip olduğundan emin olun:
Developer Connect'i yapılandırın ve ardından GitHub.com, GitLab.com veya Bitbucket.org deponuza bağlanın:
GitHub
GitLab
Bitbucket
Ayrıca, kod özelleştirmenin yalnızca aşağıdaki konumlarda (bölgelerde) Developer Connect bağlantılarını desteklediğini unutmayın:
us-central1
europe-west1
asia-southeast1
Bir kabuk ortamında,
gcloud components update
komutunu çalıştırarak gcloud'un yüklü tüm bileşenlerini en son sürüme güncellediğinizden emin olun. Bu adımda gcloud'u yükleyip başlatabilir veya Cloud Shell Düzenleyici'yi kullanabilirsiniz.gcloud components update
Hangi özel depoların bağlanacağını seçme
En iyi uygulama olarak, aşağıdaki özelliklere sahip depoları bağladığınızdan emin olun:
- Geliştiricilerinizin yazmasını istediğiniz kodla benzer bir stil veya yapıya sahip kodunuz olmalıdır.
- Mevcut kod tabanınızdan çağırmak istediğiniz özel kitaplıklarınız veya API'leriniz varsa
(İsteğe bağlı) Hangi dosyaların dizine eklenmeyeceğini seçin.
Varsayılan olarak kod özelleştirme, belirtilen depolarınızdaki tüm desteklenen kod dosyalarını dizine ekler.
Dizine eklemek istemediğiniz kodun gösterilmesini önlemek için main
gibi kararlı bir dal kullanabilir ve dizin erişiminizi kontrol etmek için dal kalıplarını kullanabilirsiniz.
Alternatif olarak, .aiexclude
dosyası oluşturarak dosyaları dizinden hariç tutabilirsiniz.
Dizin oluşturma
Kod özelleştirme, daha hızlı kod oluşturma önerileri ve aramalar için deponuzu analiz edip ayrıştırmak üzere bir dizine dayanır.
gcloud
Dizini oluşturmak için bir kabuk ortamında gemini code-repository-indexes create
komutunu kullanın:
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"
}
Aşağıdakini değiştirin:
INDEX_NAME
: dizin adınız. Önemli: Dizin adınızı kaydedin. Bu bilgiye bu belgedeki çeşitli adımlarda ihtiyacınız olacak.PROJECT_ID
: Google Cloud proje kimliğiniz.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.
Dizin oluşturma işlemi genellikle 30 dakika sürer ancak bir saati de bulabilir.
Google, her proje ve kuruluş için kod deposu dizini sayısını bir ile sınırlar.
Depo gruplarını kullanarak dizininize erişimi kontrol etme
Depo grubu, depoları ve bunların dal kalıplarını içeren dizine ekleme yapılandırması için bir kapsayıcıdır. Depo grupları, ayrıntılı IAM denetimi için tasarlanmıştır. Geliştiricilere, cloudaicompanion.repositoryGroups.use
iznine sahip oldukları bu gruplardaki dizine eklenmiş verilere erişim olanağı tanır.
Depo grupları, aynı proje ve konumdaki Developer Connect depolarını veya bağlantılarını içerir.
Yöneticiler aşağıdaki işlemleri gerçekleştirir:
- Code Repository Index kaynağı oluşturun.
- Aynı proje ve konumda yeni bir Developer Connect bağlantısı yapılandırın.
- Bağlantıdaki Git depolarını bağlayın.
Bağlantıların kaynak adlarını alın, her bağlantı için dizine eklenecek dal kalıbını seçin ve bir veya daha fazla depo grubuna yerleştirin.
gcloud
Depo grubu oluşturmak için bir kabuk ortamında gemini code-repository-indexes repository-groups create
komutunu kullanın:
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"
}
}
Aşağıdakini değiştirin:
REPOSITORY_GROUP
:default
gibi depo grubunun adı.PROJECT_ID
: Google Cloud proje kimliğiniz.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturmak için önceki adımda oluşturduğunuz dizinin adı.REPOSITORY_RESOURCE_NAME
: Developer Connect bağlantısındaki deponun adı. Deponun adını bulmak için Google Cloud Console'daki Developer Connect sayfasına gidin ve Repositories (Depolar) sekmesinde tablodaki Connection (Bağlantı) sütununda Connection ID'yi (Bağlantı Kimliği) bulun. Kaynak adını kopyalamak için daha fazla seçenek sunan more_vert menüsünü tıklayın ve Kaynak yolunu kopyala'yı seçin.BRANCH_NAMES
: dizine eklemek istediğiniz dalların adı (ör.main|dev
).
Ayrıca, aşağıdaki gibi biçimlendirilmiş bir JSON (veya YAML) dosyasında tanımlanan depolarla bir depo grubu da oluşturabilirsiniz:
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
JSON veya YAML dosyasına dayalı bir depo grubu oluşturmak için kabuk ortamında gemini code-repository-indexes repository-groups create
komutunu kullanın:
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
İsterseniz Cloud Key Management Service aracılığıyla müşteri tarafından yönetilen bir şifreleme anahtarıyla (CMEK) verilerinizi şifreleyip kontrol edebilirsiniz. CMEK kullanma hakkında daha fazla bilgi edinmek için Müşteri tarafından yönetilen şifreleme anahtarlarıyla verileri şifreleme başlıklı makaleyi inceleyin.
Bir projede depo grubuna IAM rolü verme
Yalnızca dizindeki depolardan öneri alırsınız. Her depo, bir veya daha fazla depo grubuna aittir. Önerilere erişmek için aşağıdaki yöntemlerden birini kullanarak Cloud AI Companion Repository Groups User IAM rolünü (roles/cloudaicompanion.repositoryGroupsUser
) (gerekli cloudaicompanion.repositoryGroups.user
IAM iznini içerir) depo grubuna atamanız gerekir:
- Asıl kullanıcılara dizinin tamamına erişme izni verin.
- Ana hesaplara dizinin bir alt kümesine erişim izni verme
Asıl kullanıcılara dizinin tamamına erişme izni verme
Bir proje için IAM politikası bağlamak üzere kabuk ortamında
projects add-iam-policy-binding
komutunu kullanın:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Aşağıdakini değiştirin:
PROJECT_ID
: Depo grubunun bulunduğu proje kimliği.PRINCIPAL
: Erişim ihtiyacı olan yöneticinin e-posta adresi. Örneğin,user:test-user@gmail.com
bireysel bir kullanıcı için veyagroup:admins@example.com
bir grup için.
Daha fazla bilgi için
gcloud projects set-iam-policy
konusuna bakın.Bir koşul belirtmeniz istendiğinde
None
yazın.
Ana hesaplara dizinin bir alt kümesine erişim izni verme
Birden fazla depo grubu oluşturabilir ve farklı IAM asıl kullanıcılarına IAM rolleri atayabilirsiniz.
gcloud
IAM politikası ayarlamak için IAM gruplarının ve atanmış rollerin listesini içeren IAM politikası JSON veya YAML dosyasını hazırlamanız gerekir. Örneğin:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Ek ayrıntılar ve söz dizimi için İzin verme politikalarını anlama başlıklı makaleyi inceleyin.
IAM politikasını ayarlamak için kabuk ortamında gemini code-repository-indexes repository-groups set-iam-policy
komutunu kullanın:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
Aşağıdakini değiştirin:
GROUP_NAME
: Depo gruplarını kullanarak dizininize erişimi kontrol etmek için önceki adımda oluşturduğunuz depo grubu adı.POLICY_FILE
: IAM politikası.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturmak için önceki adımda oluşturduğunuz dizinin adı.Daha fazla bilgi için
gcloud gemini code-repository-indexes repository-groups set-iam-policy
konusuna bakın.
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
]
}
Ayrıca bağlama da oluşturabilirsiniz:
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"]
}
Aşağıdakini değiştirin:
GROUP_NAME
: Depo gruplarını kullanarak dizininize erişimi kontrol etmek için önceki adımda oluşturduğunuz depo grubu adı.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturmak için önceki adımda oluşturduğunuz dizinin adı.Daha fazla bilgi için
gcloud gemini code-repository-indexes repository-groups set-iam-policy
konusuna bakın.
Dizine ekleme durumunu kontrol etme
Dizine eklemek istediğiniz depoların sayısına ve boyutlarına bağlı olarak, içeriklerin dizine eklenmesi 24 saati bulabilir. Büyük depolarda dizine ekleme işlemi daha uzun sürebilir. Dizin oluşturma işlemi 24 saatte bir gerçekleşir ve depoda yapılan tüm değişiklikler alınır.
indexing
günlüklerini arayın. Daha fazla bilgi için Sorgu dilini günlüğe kaydetme bölümüne bakın.Console
Google API Konsolu'nda Günlük Gezgini'ne gidin.
indexing
günlüklerini görüntülemek için günlük adları filtresini kullanın.
gcloud
Dizin oluşturma günlüklerini aramak için kabuk ortamında
logging read
komutunu kullanın:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
PROJECT_ID
kısmını, depo grubunun bulunduğu proje kimliğiyle değiştirin.Örneğin,
indexing
günlüklerindeki hataları görüntülemek için aşağıdaki komutu çalıştırın:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Aşağıdakiler gibi ilişkili dizine ekleme durumlarını inceleyin:
- Depo dizine ekleme başlangıcı (ör.
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
) - Bireysel depo indekslemenin sonu (örneğin):
- Başarılı:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Başarısız:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Başarılı:
- Depo dizine ekleme işleminin sonu (örneğin):
- Başarılı:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Başarısız:
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.
- Başarılı:
Dizin durumlarında,
REPOSITORY_NAME
, incelemek istediğiniz depodur.- Depo dizine ekleme başlangıcı (ör.
Aşağıdakiler gibi ilişkili dizine ekleme hatalarını inceleyin:
- Depo getirilemedi.
- Depo dosyaları listelenemedi.
- Dizinlerden depo bilgileri alınamadı.
- Dosyalar dizinden alınamadı.
- Dahili hata.
Kod özelleştirmeyi kullanma
Kod özelleştirmeyi ayarladıktan sonra, tam kod tabanı farkındalığından elde edilen sonuçlara ek olarak, dizine eklediğiniz özel koda dayalı olabilecek kod tamamlama ve kod oluşturma önerilerini görmeye başlarsınız.
Kod özelleştirmeyi kullanma ve en iyi uygulamalar hakkında daha fazla bilgi edinmek için Kod özelleştirmeyi kullanma başlıklı makaleyi inceleyin.
Kod özelleştirmeyi devre dışı bırakma
Geçerli dizindeki tüm depo gruplarını listelemek için kabuk ortamında
gemini code-repository-indexes repository-groups list
komutunu kullanın:gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri
Aşağıdakini değiştirin:
REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.PROJECT_ID
: Google Cloud proje kimliğiniz.INDEX_NAME
: Dizin oluşturmak için önceki adımda oluşturduğunuz dizinin adı.
Bir depo grubunu mevcut dizinden silmek için
gemini code-repository-indexes repository-groups delete
komutunu kullanın:gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
Dizindeki tüm depo gruplarını silene kadar her depo grubu için 3. adımı tekrarlayın.
İsteğe bağlı: Dizini silmek için kabuk ortamında
gemini code-repository-indexes delete
komutunu kullanın:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Sırada ne var?
- Gemini Code Assist'i kullanmaya başlama:
- VS Code, IntelliJ ve desteklenen diğer JetBrains IDE'leri: Gemini Code Assist ile kod yazma
- Cloud Shell: Gemini Code Assist ile kod yazma
- Cloud Workstations: Gemini Code Assist ile kod yazma
- Kod özelleştirmeyi kullanma ve en iyi uygulamalar hakkında bilgi edinin.
- Müşteri tarafından yönetilen şifreleme anahtarlarıyla (CMEK) verileri nasıl şifreleyeceğinizi öğrenin.
- Developer Connect hakkında daha fazla bilgi edinin.
- Google Cloud için Gemini'ın verilerinizi nasıl ve ne zaman kullandığını öğrenin.