במאמר הזה מוסבר איך להגדיר התאמה אישית של קוד ב-Gemini Code Assist על ידי חיבור Gemini Code Assist למאגרי הקוד הפרטיים שלכם. התכונה הזו מאפשרת לקבל המלצות לקוד, שמבוססות על הספריות הפנימיות, ממשקי ה-API הפרטיים וסגנון התכנות של הארגון.
לפני שמתחילים
- מגדירים את Gemini Code Assist עם מינוי Enterprise.
- ליצור או להגדיר חשבונות של משתמשי קצה. לכל מפתח בארגון שמשתמש ב-Gemini Code Assist צריכה להיות זהות משתמש ב-Google Cloud עם הרשאה לגשת לפרויקט שלכם ב-Google Cloud. מידע נוסף זמין במאמר הקצאת תפקידים במסוף Google Cloud. מוודאים שלכל משתמש יש את התפקידים הבאים:
מגדירים את Developer Connect ומתחברים למאגר ב-GitHub.com, ב-GitLab.com או ב-Bitbucket.org:
- מקשרים ל-GitHub.
- חיבור ל-GitHub Enterprise Cloud.
- מתחברים ל-GitHub Enterprise.
- מתחברים ל-GitLab.
- מתחברים ל-GitLab Enterprise.
- חיבור ל-Bitbucket Cloud
- מתחברים ל-Bitbucket Data Center.
בנוסף, חשוב לזכור שהתאמה אישית של קוד תומכת רק בחיבורים ל-Developer Connect במיקומים (אזורים) הבאים:
us-central1
europe-west1
asia-southeast1
בסביבת מעטפת, מריצים את הפקודה
gcloud components update
כדי לוודא שעדכנתם את כל הרכיבים המותקנים של gcloud לגרסה האחרונה. בשלב הזה אפשר להתקין את gcloud ולהפעיל אותו, או להשתמש ב-Cloud Shell Editor.gcloud components update
בחירת המאגרים הפרטיים שאליהם רוצים להתחבר
מומלץ לחבר מאגרים:
- קוד בסגנון או במבנה דומים לקוד שרוצים שהמפתחים יכתבו.
- יש לכם ספריות פרטיות או ממשקי API שתרצו לבצע קריאה אליהם ממסד הקוד הנוכחי.
(אופציונלי) בוחרים אילו קבצים לא יתווספו לאינדקס
כברירת מחדל, התאמה אישית של קוד יוצרת אינדקס של כל קובצי הקוד הנתמכים במאגרים שציינתם.בתרחישים רבים, יכול להיות שיש לכם קבצים או עצים משניים ספציפיים שאתם לא רוצים להוסיף לאינדקס. לדוגמה:
- מידע רגיש מאוד עם גישה מוגבלת בתוך הארגון
- קוד ישן או קוד שהוצא משימוש
- קוד שנוצר באופן אוטומטי או קוד זמני
כדי למנוע חשיפת קוד שאתם לא רוצים להוסיף לאינדקס, תוכלו להשתמש בדפוסי ההסתעפות כדי לשלוט בגישה לאינדקס ולהשתמש בהסתעפות יציבה, כמו main
.
לחלופין, אפשר גם להחריג קבצים מהאינדקס על ידי יצירת קובץ .aiexclude
.
יצירת אינדקס
התאמה אישית של קוד מתבססת על אינדקס לניתוח ולניתוח רכיבי המאגר, כדי לקבל הצעות וחיפושים מהירים יותר ליצירת קוד.
כדי ליצור את האינדקס, בסביבת מעטפת משתמשים בפקודה gemini code-repository-indexes create
:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
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 בחיבור.
מקבלים את שמות המשאבים של הקישורים, בוחרים תבנית להוספת הענף לאינדקס לכל קישור ומוסיפים אותו לקבוצת מאגר אחת או יותר.
כדי ליצור קבוצת מאגרים, בסביבת מעטפת משתמשים בפקודה 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 "}]'
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, ובכרטיסייה Repositories מחפשים את מזהה החיבור בעמודה Connection בטבלה. כדי להעתיק את שם המשאב, לוחצים על התפריט more_vert כדי להציג אפשרויות נוספות ובוחרים באפשרות העתקת נתיב המשאב.BRANCH_NAMES
: השם של ההסתעפויות שרוצים להוסיף לאינדקס, למשלmain|dev
.
אפשר גם ליצור קבוצת מאגרים עם מאגרים שמוגדרים בקובץ JSON (או קובץ YAML) בפורמט הבא:
[
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "dev"
}
]
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
כדי ליצור קבוצת מאגרים על סמך קובץ JSON או YAML, בסביבת מעטפת משתמשים בפקודה 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=FILEPATH .json
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, ראו הצפנת נתונים באמצעות מפתחות הצפנה בניהול הלקוח.
הקצאת תפקיד IAM לקבוצת המאגר בפרויקט
אתם מקבלים הצעות רק ממאגרים שרשומים במדד. כל מאגר שייך לקבוצת מאגרים אחת או יותר. כדי לגשת להצעות, צריך להקצות לקבוצת המאגר את תפקיד ה-IAM 'משתמש בקבוצות של מאגרי Cloud AI Companion' (roles/cloudaicompanion.repositoryGroupsUser
) – שכולל את הרשאת ה-IAM הנדרשת cloudaicompanion.repositoryGroups.user
– באחת מהדרכים הבאות:
- מעניקים לחשבונות המשתמשים הרשאה לגשת לכל האינדקס.
- הענקת גישה לחשבונות משתמשים לקבוצת משנה של האינדקס.
הענקת הרשאה לחשבונות משתמשים לגשת לכל האינדקס
כדי לקשר מדיניות IAM לפרויקט, בסביבת מעטפת, משתמשים בפקודה
projects add-iam-policy-binding
: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
.-
כשמופיעה בקשה לציין תנאי, מקלידים
None
.
הענקת גישה לחשבונות משתמשים לקבוצת משנה של האינדקס
אפשר ליצור כמה קבוצות של מאגרים ולהקצות תפקידים ב-IAM לחשבונות משתמשים שונים ב-IAM.
כדי להגדיר מדיניות IAM, צריך להכין את קובץ ה-JSON או ה-YAML של מדיניות IAM, שיכיל רשימה של קבוצות IAM ותפקידים שהוקצו. לדוגמה:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
פרטים נוספים ותחביר מופיעים במאמר הסבר על מדיניות ההרשאות.
כדי להגדיר את מדיניות ה-IAM, בסביבת מעטפת משתמשים בפקודה gemini code-repository-indexes repository-groups set-iam-policy
:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAME POLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
מחליפים את מה שכתוב בשדות הבאים:
GROUP_NAME
: שם קבוצת המאגר שיצרתם בשלב הקודם כדי לשלוט בגישה לאינדקס באמצעות קבוצות מאגרים.POLICY_FILE
: מדיניות IAM.REGION
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.INDEX_NAME
: השם של האינדקס שיצרתם בשלב הקודם כדי ליצור אינדקס.מידע נוסף זמין במאמר
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
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"]
}
מחליפים את מה שכתוב בשדות הבאים:
GROUP_NAME
: שם קבוצת המאגר שיצרתם בשלב הקודם כדי לשלוט בגישה לאינדקס באמצעות קבוצות מאגרים.REGION
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.INDEX_NAME
: השם של האינדקס שיצרתם בשלב הקודם כדי ליצור אינדקס.מידע נוסף זמין במאמר
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
בדיקת סטטוס ההוספה לאינדקס
תהליך ההוספה לאינדקס עשוי להימשך עד 24 שעות, בהתאם למספר המאגרים שרוצים להוסיף לאינדקס ולגודל שלהם. במאגרים גדולים, הוספה לאינדקס עשויה להימשך זמן רב יותר. ההוספה לאינדקס מתבצעת פעם ב-24 שעות, והיא כוללת את כל השינויים שבוצעו במאגר.
מחפשים את היומנים
indexing
. למידע נוסף, ראו שפת השאילתות של יומנים.נכנסים לדף Logs Explorer במסוף Google Cloud.
משתמשים במסנן שמות היומנים כדי להציג יומני
indexing
.
כדי לחפש את יומני ההוספה לאינדקס, בסביבת מעטפת משתמשים בפקודה
logging read
:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing""מחליפים את
PROJECT_ID
במזהה הפרויקט שבו נמצאת קבוצת המאגר.לדוגמה, כדי להציג שגיאות ביומני
indexing
, מריצים את הפקודה הבאה:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing" AND severity>=ERROR"בודקים את סטטוסי ההוספה לאינדקס המשויכים, כמו:
- תחילת ההוספה של המאגר לאינדקס – לדוגמה,
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
הוא המאגר שרוצים לבדוק.- תחילת ההוספה של המאגר לאינדקס – לדוגמה,
בודקים את שגיאות ההוספה לאינדקס המשויכות, כמו:
- אחזור המאגר נכשל.
- לא ניתן היה להכין רשימה של קובצי המאגר.
- לא ניתן היה לאחזר את פרטי המאגר מהאינדקס.
- לא ניתן לאחזר קבצים מהאינדקס.
- שגיאה פנימית.
שימוש בהתאמה אישית של קוד
אחרי שתגדירו התאמה אישית של קוד, המשתמשים יתחילו לראות הצעות להשלמת קוד וליצירת קוד, שעשויות להתבסס על קוד פרטי שנוסף לאינדקס, בנוסף לתוצאות מהמודעות לזיהוי קוד.
השבתת ההתאמה האישית של הקוד
כדי להציג את כל קבוצות המאגר של האינדקס הנוכחי בסביבת מעטפת, משתמשים בפקודה
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מחליפים את מה שכתוב בשדות הבאים:
REGION
: אזור נתמך, כפי שמפורט בקטע לפני שמתחילים בדף הזה, שהגדרתם ב-Developer Connect בפרויקט שלכם ב-Google Cloud.PROJECT_ID
: מזהה הפרויקט ב-Google Cloud.INDEX_NAME
: השם של האינדקס שיצרתם בשלב הקודם כדי ליצור אינדקס.
כדי למחוק קבוצת מאגרים מהאינדקס הנוכחי, משתמשים בפקודה
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 לכל קבוצת מאגרים עד שמוחקים את כל קבוצות המאגרים מהאינדקס.
אופציונלי: כדי למחוק את האינדקס, בסביבת מעטפת משתמשים בפקודה
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete
INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
המאמרים הבאים
- כדי להתחיל להשתמש ב-Gemini Code Assist:
- VS Code, IntelliJ וסביבות פיתוח משולבות (IDE) נתמכות אחרות של JetBrains: כתיבה בקוד באמצעות Gemini Code Assist
- Cloud Shell: כתיבה של קוד באמצעות Gemini Code Assist
- Cloud Workstations: כתיבה של קוד באמצעות Gemini Code Assist
- איך מצפינים נתונים באמצעות מפתחות הצפנה בניהול הלקוח (CMEK)
- מידע נוסף על Developer Connect
- איך Gemini for Google Cloud משתמש בנתונים שלכם, ובאילו מקרים