ضبط إعدادات تخصيص الرموز البرمجية في Gemini Code Assist

يوضّح هذا المستند كيفية إعداد تخصيص رمز Gemini Code Assist من خلال ربط Gemini Code Assist بمستودعات رموزك الخاصة. تتيح لك هذه الميزة تلقّي اقتراحات بشأن الرموز البرمجية، وهي مستندة إلى المكتبات الداخلية وواجهات برمجة التطبيقات الخاصة وأسلوب الترميز في مؤسستك.

قبل البدء

اختيار المستودعات الخاصة المرتبطة

كأفضل ممارسة، احرص على ربط المستودعات التي:

  • أن يتضمّن رمزًا برمجيًا بأسلوب أو بنية مشابهة لما تريد أن يكتبه المطوّرون.
  • لديك مكتبات أو واجهات برمجة تطبيقات خاصة تريد استدعاءها من قاعدة الرموز البرمجية الحالية.

(اختياري) اختَر الملفات التي لا تريد فهرستها

بشكلٍ تلقائي، يفهرس تخصيص الرمز البرمجي جميع ملفات الرمز البرمجي المتوافقة في المستودعات التي تحدّدها.

لمنع عرض الرمز الذي لا تريد فهرسته، يمكنك استخدام أنماط الفروع من أجل التحكّم في الوصول إلى الفهرس واستخدام فرع ثابت، مثل main.

بدلاً من ذلك، يمكنك أيضًا استبعاد الملفات من الفهرس عن طريق إنشاء ملف .aiexclude.

إنشاء فهرس

تعتمد عملية تخصيص الرموز البرمجية على فهرس لتحليل مستودعك وتفسيره من أجل تقديم اقتراحات وعمليات بحث أسرع بشأن إنشاء الرموز البرمجية.

gcloud

لإنشاء الفهرس، استخدِم الأمر gemini code-repository-indexes create في بيئة shell:

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

غيِّر القيم في السلسلة على الشكل التالي:

  • 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 في بيئة shell:

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

غيِّر القيم في السلسلة على الشكل التالي:

  • REPOSITORY_GROUP: اسم مجموعة المستودع، مثل default
  • استبدِل PROJECT_ID بمعرّف مشروع Google Cloud.
  • REGION: منطقة متوافقة، كما هو موضّح في قسم قبل البدء من هذه الصفحة، والتي تم إعدادها في Developer Connect في مشروعك على Google Cloud.
  • INDEX_NAME: اسم الفهرس الذي أنشأته في خطوة سابقة من أجل إنشاء فهرس.
  • REPOSITORY_RESOURCE_NAME: اسم المستودع داخل اتصال Developer Connect. للعثور على اسم المستودع، انتقِل إلى صفحة Developer Connect في Google Cloud Console، وفي علامة التبويب المستودعات، ابحث عن رقم تعريف الاتصال ضمن عمود الاتصال في الجدول. لنسخ اسم المورد، انقر على قائمة more_vert لعرض المزيد من الخيارات، ثم اختَر نسخ مسار المورد.
  • BRANCH_NAMES: اسم الفروع التي تريد فهرستها، مثل main|dev

يمكنك أيضًا إنشاء مجموعة مستودعات تتضمّن مستودعات محدّدة في ملف JSON (أو YAML) بالتنسيق التالي:

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 أو YAML، استخدِم الأمر gemini code-repository-indexes repository-groups create في بيئة 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

إذا كنت تفضّل ذلك، يمكنك تشفير بياناتك والتحكّم فيها باستخدام مفتاح تشفير يديره العميل (CMEK) من خلال Cloud Key Management Service. لمزيد من المعلومات حول استخدام مفتاح CMEK، يُرجى الاطّلاع على تشفير البيانات باستخدام مفاتيح التشفير التي يديرها العميل.

منح دور إدارة الهوية وإمكانية الوصول لمجموعة المستودع في مشروع

لن تتلقّى اقتراحات إلا من المستودعات المتوفّرة في الفهرس. ينتمي كل مستودع إلى مجموعة واحدة أو أكثر من مجموعات المستودعات. للوصول إلى الاقتراحات، يجب منح دور "مستخدِم مجموعات مستودع Cloud AI Companion" ضِمن "إدارة الهوية وإمكانية الوصول" (roles/cloudaicompanion.repositoryGroupsUser)، والذي يتضمّن إذن cloudaicompanion.repositoryGroups.user المطلوب ضِمن "إدارة الهوية وإمكانية الوصول"، إلى مجموعة المستودع بإحدى الطرق التالية:

  • امنح الجهات الرئيسية إذن الوصول إلى الفهرس بأكمله.
  • منح الجهات الرئيسية إذن الوصول إلى مجموعة فرعية من الفهرس

منح الجهات الرئيسية إذن الوصول إلى الفهرس بأكمله

  1. لربط سياسة إدارة الهوية وإمكانية الوصول بمشروع، استخدِم الأمر projects add-iam-policy-binding في بيئة shell:

    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.

  2. عندما يُطلب منك تحديد شرط، أدخِل None.

منح النطاقات الرئيسية إذن الوصول إلى مجموعة فرعية من الفهرس

يمكنك إنشاء مجموعات مستودعات متعددة وتعيين أدوار IAM لجهات مختلفة في IAM.

gcloud

لإعداد سياسة إدارة الهوية وإمكانية الوصول، عليك إعداد ملف JSON أو YAML الخاص بسياسة إدارة الهوية وإمكانية الوصول، والذي سيتضمّن قائمة بمجموعات إدارة الهوية وإمكانية الوصول والأدوار المخصّصة. على سبيل المثال:

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

لمزيد من التفاصيل والصيغة، يُرجى الاطّلاع على التعرّف على سياسات السماح.

لضبط سياسة إدارة الهوية وإمكانية الوصول، استخدِم أمر gemini code-repository-indexes repository-groups set-iam-policy في بيئة shell:

gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME

غيِّر القيم في السلسلة على الشكل التالي:

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

يمكنك أيضًا إنشاء ربط:

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

غيِّر القيم في السلسلة على الشكل التالي:

التحقّق من حالة الفهرسة

بناءً على عدد المستودعات التي تريد فهرستها وحجمها، قد تستغرق عملية فهرسة المحتوى ما يصل إلى 24 ساعة. بالنسبة إلى المستودعات الكبيرة، قد يستغرق الفهرسة وقتًا أطول. تتم الفهرسة مرة واحدة كل 24 ساعة، ويتم رصد أي تغييرات تم إجراؤها في المستودع.

  1. ابحث عن سجلّات indexing. لمزيد من المعلومات، راجِع لغة طلب البحث في السجلّات.

    وحدة التحكّم

    1. في "وحدة تحكّم Google API"، انتقِل إلى مستكشف السجلات.

      الانتقال إلى "مستكشف السجلات"

    2. استخدِم فلتر أسماء السجلات لعرض سجلات indexing.

    gcloud

    للبحث عن سجلات الفهرسة، استخدِم الأمر logging read في بيئة shell:

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

    استبدِل PROJECT_ID برقم تعريف المشروع الذي توجد فيه مجموعة المستودع.

    على سبيل المثال، لعرض الأخطاء في سجلّات indexing، شغِّل الأمر التالي:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. راجِع حالات الفهرسة المرتبطة، مثل ما يلي:

    • بداية فهرسة المستودع، على سبيل المثال 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 هو المستودع الذي تريد مراجعته.

  3. راجِع أخطاء الفهرسة المرتبطة، مثل ما يلي:

    • تعذَّر جلب المستودع.
    • تعذّر إدراج ملفات المستودع.
    • تعذّر استرداد معلومات المستودع من الفهرس.
    • تعذّر استرداد الملفات من الفهرس.
    • حدث خطأ داخلي.

استخدام خيار تخصيص الرمز

بعد إعداد تخصيص الرموز البرمجية، ستبدأ في تلقّي اقتراحات لإكمال الرموز البرمجية وإنشائها، وقد تستند هذه الاقتراحات إلى رموز برمجية خاصة سبق لك فهرسةها، بالإضافة إلى نتائج من إدراك قاعدة الرموز البرمجية الكاملة.

لمزيد من المعلومات عن استخدام ميزة "تخصيص الرمز" وأفضل الممارسات، يُرجى الاطّلاع على استخدام ميزة "تخصيص الرمز".

إيقاف تخصيص الرمز

  1. لعرض جميع مجموعات المستودعات للفهرس الحالي، استخدِم الأمر gemini code-repository-indexes repository-groups list في بيئة shell:

    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: اسم الفهرس الذي أنشأته في خطوة سابقة من أجل إنشاء فهرس.
  2. لحذف مجموعة مستودع من الفهرس الحالي، استخدِم الأمر 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. كرِّر الخطوة 3 لكل مجموعة مستودعات إلى أن تحذف جميع مجموعات المستودعات من الفهرس.

  4. اختياري: لحذف الفهرس، استخدِم الأمر gemini code-repository-indexes delete في بيئة shell:

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

الخطوات التالية