1. סקירה כללית
בשיעור ה-Lab הזה תגדירו את פייפליין ה-CICD של GitLab ותשלבו אותו עם Gemini כדי ליצור פעולות אוטומטיות של שלבים לסקר קוד.

מה תלמדו
בשיעור Lab זה תלמדו איך:
- איך מוסיפים ב-GitLab שלבים של אוטומציה לבדיקת קוד באמצעות AI גנרטיבי
- איך מריצים את devai CLI באופן מקומי כדי לבצע אוטומציה של בדיקות קוד
דרישות מוקדמות
- ההנחה בשיעור ה-Lab הזה היא שאתם מכירים את הסביבות של Cloud Console ו-Cloud Shell.
2. הגדרה ודרישות
הגדרה של פרויקט ב-Cloud
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג למשתתפים בפרויקט. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא נשארת לאורך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על שלושת הערכים האלה מופיע במאמרי העזרה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
הגדרת הסביבה
פותחים צ'אט עם Gemini.

אפשר גם להקליד 'יש לך שאלה ל-Gemini?' בסרגל החיפוש.

מפעילים את Gemini for Google Cloud API:

כדי לנסות את התכונה, לוחצים על "Start chatting", בוחרים אחת מהשאלות לדוגמה או מקלידים פרומפט משלכם.

פרומפטים שאפשר לנסות:
- תסביר את Cloud Run ב-5 נקודות עיקריות.
- אתה מנהל המוצר של Google Cloud Run. תסביר לסטודנט מה זה Cloud Run ב-5 נקודות קצרות.
- אתה מנהל מוצר של Google Cloud Run. עליך להסביר למפתח Kubernetes מוסמך מהו Cloud Run ב-5 נקודות קצרות.
- אתה מנהל מוצר ב-Google Cloud Run. תסביר למפתח בכיר מתי כדאי להשתמש ב-Cloud Run ומתי ב-GKE, ב-5 נקודות קצרות.
במדריך לכתיבת הנחיות אפשר לקרוא מידע נוסף על כתיבת הנחיות טובות יותר.
איך Gemini ל-Google Cloud משתמש בנתונים שלכם
המחויבות של Google לפרטיות
Google הייתה אחת החברות הראשונות בתעשייה שפרסמו התחייבות לשמירה על פרטיות ב-AI/ML. במסגרת ההתחייבות הזו, אנחנו מצהירים שאנחנו מאמינים שללקוחות צריכה להיות רמת האבטחה והשליטה הגבוהה ביותר על הנתונים שלהם שמאוחסנים בענן.
נתונים שאתם שולחים ומקבלים
השאלות שאתם שואלים את Gemini, כולל כל מידע או קוד שאתם שולחים ל-Gemini כדי לנתח או להשלים, נקראות הנחיות. התשובות או השלמות הקוד שאתם מקבלים מ-Gemini נקראות תגובות. Gemini לא משתמש בפרומפטים שלכם או בתשובות שלו כנתונים לאימון המודלים שלו.
הצפנה של הנחיות
כששולחים הנחיות ל-Gemini, הנתונים מוצפנים במהלך ההעברה כקלט למודל הבסיסי ב-Gemini.
נתוני תוכניות שנוצרו על ידי Gemini
Gemini מאומן על קוד של צד ראשון ב-Google Cloud וגם על קוד נבחר של צד שלישי. אתם אחראים לאבטחה, לבדיקה וליעילות של הקוד שלכם, כולל כל השלמה, יצירה או ניתוח של קוד ש-Gemini מציע לכם.
3. אפשרויות לבדיקת פרומפטים
אם רוצים לשנות או להרחיב את ההנחיות הקיימות של devai cli, יש כמה אפשרויות לעשות זאת.
Vertex AI Studio הוא חלק מפלטפורמת Vertex AI של Google Cloud, והוא נועד במיוחד לפשט ולהאיץ את הפיתוח והשימוש במודלים של AI גנרטיבי.
Google AI Studio הוא כלי מבוסס-אינטרנט ליצירת אב טיפוס ולניסויים בהנדסת פרומפטים וב-Gemini API.
- Gemini בדפדפן (gemini.google.com)
אפליקציית האינטרנט של Google Gemini (gemini.google.com) היא כלי מבוסס-אינטרנט שנועד לעזור לכם להכיר את מודלי ה-AI של Gemini מבית Google ולנצל את היכולות שלהם.
- אפליקציית Google Gemini לנייד ל-Android ואפליקציית Google ב-iOS
4. יצירת חשבון שירות
לוחצים על הסמל משמאל לסרגל החיפוש כדי להפעיל את Cloud Shell.

במסוף שנפתח, מפעילים את השירותים הנדרשים כדי להשתמש בממשקי Vertex AI API וב-Gemini Chat.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
אם מתבקשים לאשר, לוחצים על 'אישור' כדי להמשיך.

מריצים את הפקודות הבאות כדי ליצור חשבון שירות ומפתחות חדשים.
תשתמשו בחשבון השירות הזה כדי לבצע קריאות ל-Vertex AI Gemini API מצינורות CICD.
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"
הקצאת תפקידים.
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
5. ייבוא מאגר GitHub למאגר GitLab
עוברים אל https://gitlab.com/projects/new ובוחרים באפשרות Import project או Repository by URL:
כתובת ה-URL של מאגר Git:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
בקטע Project URL (כתובת URL של הפרויקט) – בוחרים את מזהה המשתמש ב-GitLab.
מגדירים את הרשאות הגישה ל-Public.
כדי להתחיל את תהליך הייבוא, לוחצים על הסמל Create Project.
אם מופיעה שגיאה לגבי כתובת URL לא תקינה של מאגר ב-GitHub, צריך ליצור טוקן חדש ב-GitHub(גרסה מדויקת) עם גישת קריאה בלבד למאגרים ציבוריים, ולנסות שוב לייבא את המאגר אחרי שמזינים את מזהה המשתמש והטוקן ב-GitHub.
6. הוספת משתני צינורות CICD של GitLab
בשלב הבא תפעילו את פייפליין ה-CICD של GitLab כדי להריץ סקר קוד כששינויים נדחפים למאגר.
פותחים את מאגר הנתונים של GitLab בדפדפן ועוברים לקטע Settings / CICD".
מרחיבים את הקטע Variables ולוחצים על Add variable.
חשוב לבטל את הסימון של כל תיבות הסימון כשמוסיפים את המשתנים החדשים.
דוגמה:

מוסיפים 3 משתנים:
-
PROJECT_ID– מזהה הפרויקט שלכם ב-qwiklabs -
LOCATION- us-central1 GOOGLE_CLOUD_CREDENTIALS
לערך המשתנה GOOGLE_CLOUD_CREDENTIALS, משתמשים במפתח של חשבון השירות שנוצר בקטע שלמעלה. מריצים את הפקודה הזו ב-Google Cloud Shell ומעתיקים את הערך.
cat ~/vertex-client-key.json
תצוגת המשתנים של CI/CD:

7. הפעלת צינור עיבוד נתונים של GitLab CICD
פותחים את Build / Pipelines בממשק המשתמש של GitLab ולוחצים על Run Pipeline.

8. בדיקת הפלט של צינור עיבוד הנתונים ב-GitLab
פותחים את הקובץ Build / Jobs בממשק המשתמש של GitLab ובודקים את הפלט של צינור עיבוד הנתונים.

סקירה כללית של פקודות צינורות עיבוד נתונים
הגדרת צינור עיבוד נתונים של GitLab: .gitlab-ci.yml
פקודה לבדיקת היקף הבדיקה:
devai review testcoverage -c ./sample-app/src
הפקודה devai review testcoverage מנתחת קוד וחבילת מקרים לבדיקה משויכת, אם יש כזו, באמצעות מודל AI גנרטיבי, Gemini. הכלי מעריך את כיסוי הבדיקות של הקוד שסופק, ומזהה קבצים ושיטות עם בדיקות יחידה ובלעדיהן. הפקודה מתבססת על המודל כדי לספק סיכום של הכיסוי, כולל מדדים כמו שורות וענפים/תנאים מכוסים. על סמך הניתוח, הוא נותן המלצות לשיפור כיסוי הבדיקות, מציע בדיקות ספציפיות להוספה ומספק עצות כלליות לגבי שיטות מומלצות לבדיקות. בסיום, התשובה של מודל Gemini מוצגת, כולל פרטים כמו קבצים שלא נכללו בבדיקה והצעות לשיפור הבדיקות הקיימות, למשתמש דרך שורת הפקודה.
פקודה לביקורת קוד:
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
הפקודה devai review code מבצעת סקר קוד מקיף של קטע קוד שסופק באמצעות מודל AI גנרטיבי. הוא מקבל כקלט את הקוד שצריך לבדוק (הקשר) ואת העדפת פורמט הפלט (פלט). הוא משתמש במודל שפה גדול כדי לנתח את הקוד מבחינת נכונות, יעילות, תחזוקה, אבטחה ועמידה בשיטות מומלצות. הפקודה יוצרת הנחיה מפורטת שמנחה את Gemini איך לבצע את הבדיקה, ואז שולחת אותה למודל כדי להעריך את הקוד שסופק. לבסוף, הוא מעבד את התשובה של Gemini, מעצב אותה ב-Markdown, ב-JSON או בטבלה בהתאם להעדפות המשתמש, ומציג את תוצאות הביקורת.
פקודה לבדיקת תאימות:
devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md
הפקודה devai review compliance מנתחת קוד בהשוואה לקבוצה של שיטות מומלצות, בדרך כלל להגדרות של Kubernetes. הכלי משתמש במודל Gemini כדי לבדוק את הקוד שסופק (context) ולהשוות אותו לתקנים שצוינו ומוגדרים בקובץ הגדרה נפרד (config). הפקודה משתמשת בהנחיה כדי להורות למודל Gemini לפעול כמו מהנדס Kubernetes מומחה ולספק דוח תאימות. לאחר מכן, הוא מעצב את הממצאים כהסבר קצר, ומתמקד בדוגמאות קוד שמראות איך לטפל בבעיות שזוהו. לבסוף, הפקודה מדפיסה במסוף את הפלט של בדיקת התאימות של Gemini. כך המשתמש יכול לבדוק בקלות את התאימות של הקוד.
9. שכפול מאגר GitLab
חוזרים לטרמינל של Google Cloud Shell ומשכפלים את המאגר.
cd ~
mkdir gitlab
cd gitlab
מחליפים את הערכים בכתובת ה-URL של המאגר ובמזהה המשתמש ב-GitLab שנוצרו זה עתה.
git clone https://gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
משנים את הספרייה ופותחים את הקובץ .gitlab-ci.yml. אם שיניתם את שם המאגר במהלך הייבוא, צריך לעדכן את שם התיקייה לפני שמריצים את הפקודות הבאות.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
10. הסבר קוד באמצעות Gemini Code Assist
לוחצים לחיצה ימנית במקום כלשהו בקובץ .gitlab-ci.yml ובוחרים באפשרות Gemini Code Assist > Explain.

הסבר לבדיקה:

11. פיתוח באמצעות DevAI CLI
בקטע הזה תבצעו שינויים ב-devai cli.
כדי להתחיל, צריך להגדיר את python virtualenv, להתקין את הדרישות ולהריץ את פקודת הדוגמה.
cd ~/gitlab/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
מגדירים את משתני הסביבה הנדרשים.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
מריצים את הפקודה של סקר הקוד כדי לוודא שהכול פועל כמו שצריך:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md
cloudshell edit code-review.md
בודקים את התוצאות באמצעות תצוגה מקדימה של Markdown ב-Cloud Shell Editor.
משתמשים בלוח הפקודות ובוחרים באפשרות Markdown: Open Preview.



12. עיון בפקודות של devai CLI
פקודה לבדיקת היקף הבדיקה
devai review testcoverage -c ~/genai-for-developers/sample-app/src > testcoverage.md
cloudshell edit testcoverage.md
פקודה לבדיקת תאימות
devai review compliance --context ~/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md
cloudshell edit k8s-review.md
פקודה לבדיקת הביצועים
devai review performance -c ~/genai-for-developers/sample-app/src/main/java > performance-review.md
cloudshell edit performance-review.md
פקודה לבדיקת אבטחה
devai review security -c ~/genai-for-developers/sample-app/src/main/java > security-review.md
cloudshell edit security-review.md
פקודות לבדיקת חסימות
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/setup.md
סקירה וסיכום של תמונה או תרשים
תרשים קלט[~/genai-for-developers/images/extension-diagram.png]:

בדיקת הפקודה:
devai review image \
-f ~/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram" > image-review.md
cloudshell edit image-review.md
פלט:
The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts.
**Process Flow:**
1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud.
3. **Vertex AI Review:** Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally:
- Create new JIRA issues directly from the IDE based on the review prompts.
- Generate new issues in a GitLab repository.
**Key Components:**
* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):** Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.
**Benefits:**
* **Automated Review Assistance:** Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews.
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.
ניתוח השוואת תמונות:
devai review imgdiff \
-c ~/genai-for-developers/images/devai-api.png \
-t ~/genai-for-developers/images/devai-api-slack.png > image-diff-review.md
cloudshell edit image-diff-review.md
פלט:
The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image: 1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 2. **Storage Bucket:** The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI." 4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image. **Decision Explanation:** The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.
ניתוח קובץ וידאו:
devai review video \
-f "/tmp/video.mp4" \
-p "Review user journey video and create unit tests using jest framework"
פקודה ליצירת תיעוד
devai document readme -c ~/gitlab/genai-for-developers/sample-app/src/main/
פלט:
# Bank of Anthos - Balance Reader Service ## Description The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster. ## Features - Securely retrieves account balances using JWT authentication. - Leverages a local cache for fast balance retrieval. - Asynchronously processes transactions from a central ledger. - Provides health check endpoints for Kubernetes liveness and readiness probes. ...
כדי לעיין בפקודות ה-CLI של devai שזמינות ב-Cloud Shell Editor:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/README.md
אפשר גם לעיין בקובץ README.md במאגר GitHub.
13. מעולה!
כל הכבוד, סיימתם את ה-Codelab!
הנושאים שנדון בהם:
- הוספת שלבים ליצירת פעולות אוטומטיות של סקר קוד באמצעות AI גנרטיבי ב-GitLab
- הרצה של devai cli באופן מקומי
השלב הבא:
- בקרוב נוסיף עוד סשנים מעשיים.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
©2024 Google LLC כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. שמות של חברות ומוצרים אחרים הם סימנים מסחריים של החברות שאליהן הם משויכים.