Bitbucket – אוטומציה של בדיקת קוד באמצעות AI גנרטיבי

Bitbucket – אוטומציה של בדיקת קוד באמצעות AI גנרטיבי

מידע על Codelab זה

subjectהעדכון האחרון: מרץ 24, 2025
account_circleנכתב על ידי Andrey Shakirov

1.‏ סקירה כללית

בשיעור ה-Lab הזה תלמדו להגדיר צינור עיבוד נתונים ב-Bitbucket ולשלב אותו עם Gemini כדי להפוך את שלבי בדיקת הקוד לאוטומטיים.

92eff32c1969388f.png

בשיעור Lab זה תלמדו איך:

  • איך מוסיפים שלבים לאוטומציה של בדיקת הקוד ב-GenAI ב-Bitbucket
  • איך מריצים את ה-CLI של devai באופן מקומי כדי להפוך את בדיקות הקוד לאוטומטיות
  • ההנחה בשיעור ה-Lab הזה היא שיש לכם היכרות עם סביבות Cloud Console ו-Cloud Shell.

2.‏ הגדרה ודרישות

הגדרת פרויקט ב-Cloud

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הגדרת הסביבה

פותחים את Gemini Chat.

bc3c899ac8bcf488.png

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

e1e9ad314691368a.png

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

990a0ceea7d05531.png

לוחצים על 'Start chatting' ופועלים לפי אחת מהשאלות לדוגמה או מקלידים הנחיה משלכם כדי לנסות את התכונה.

ed120d672468b412.png

הנחיות שאפשר לנסות:

  • הסבר על Cloud Run ב-5 נקודות עיקריות.
  • אתם מנהלי מוצרים ב-Google Cloud Run, ואתם צריכים להסביר לתלמיד/ה על Cloud Run ב-5 נקודות עיקריות קצרות.
  • אתם מנהלי מוצרים ב-Google Cloud Run, ואתם צריכים להסביר את Cloud Run למפתח Kubernetes מוסמך ב-5 נקודות עיקריות קצרות.
  • אתם מנהלי מוצר של Google Cloud Run, ואתם צריכים להסביר למפתח בכיר מתי כדאי להשתמש ב-Cloud Run לעומת GKE, ב-5 נקודות מפתח קצרות.

במדריך להנחיות מוסבר איך לכתוב הנחיות טובות יותר.

איך Gemini for Google Cloud משתמש בנתונים שלכם

המחויבות של Google לפרטיות

Google הייתה אחת מהחברות הראשונות בתחום שפרסמתה מחויבות לפרטיות ב-AI/ML, שבה אנו מבטאים את האמונה שלנו שללקוחות צריכה להיות רמה הגבוהה ביותר של אבטחה ושליטה על הנתונים שלהם שמאוחסנים בענן.

נתונים שאתם שולחים ומקבלים

השאלות שאתם שואלים את Gemini, כולל כל פרטי הקלט או הקוד שאתם שולחים ל-Gemini לצורך ניתוח או השלמה, נקראות הנחיות. התשובות או השלמות הקוד שאתם מקבלים מ-Gemini נקראות תגובות. Gemini לא משתמש בהנחיות שלכם או בתשובות שלו כנתונים לאימון המודלים שלו.

הצפנה של הנחיות

כששולחים הנחיות ל-Gemini, הנתונים מוצפנים במעבר כקלט למודל הבסיסי ב-Gemini.

נתוני תוכנית שנוצרו מ-Gemini

‫Gemini מאומן על קוד מ-Google Cloud (מצד ראשון) ועל קוד נבחר של צד שלישי. אתם אחראים על האבטחה, הבדיקה והיעילות של הקוד שלכם, כולל כל השלמה, יצירה או ניתוח של קוד ש-Gemini מציעה לכם.

מידע נוסף על האופן שבו Google מטפלת בהנחיות

3.‏ אפשרויות לבדיקה של הנחיות

אם אתם רוצים לשנות או להרחיב הנחיות קיימות של CLI של devai, יש כמה אפשרויות לעשות זאת.

Vertex AI Studio הוא חלק מפלטפורמת Vertex AI של Google Cloud, שמיועדת במיוחד לפשט ולהאיץ את הפיתוח והשימוש במודלים של AI גנרטיבי.

Google AI Studio הוא כלי מבוסס-אינטרנט ליצירת אב טיפוס ולניסויים בתכנון הנחיות וב-Gemini API.

אפליקציית האינטרנט של Google Gemini‏ (gemini.google.com) היא כלי מבוסס-אינטרנט שמיועד לעזור לכם לגלות את מלוא הפוטנציאל של מודלי ה-AI של Gemini מבית Google ולהשתמש בו.

4.‏ יצירת חשבון שירות

לוחצים על הסמל שמשמאל לסרגל החיפוש כדי להפעיל את Cloud Shell.

3e0c761ca41f315e.png

במסוף שנפתח, מפעילים את השירותים הנדרשים לשימוש בממשקי ה-API של Vertex AI וב-Gemini Chat.

gcloud services enable \
    aiplatform
.googleapis.com \
    cloudaicompanion
.googleapis.com \
    cloudresourcemanager
.googleapis.com \
    secretmanager
.googleapis.com

אם מתבקשים לאשר, לוחצים על 'אישור' כדי להמשיך.

6356559df3eccdda.png

מריצים את הפקודות הבאות כדי ליצור חשבון שירות ומפתחות חדשים.

תשתמשו בחשבון השירות הזה כדי לבצע קריאות API ל-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 למאגר Bitbucket

נכנסים לאתר https://bitbucket.org/ ובוחרים באפשרות Create או Repository / Import repository.

bf74d0d8c903fd71.png

כתובת ה-URL של מאגר Git:

https://github.com/GoogleCloudPlatform/genai-for-developers.git

בוחרים את סביבת העבודה והפרויקט ונותנים שם למאגר החדש.

891c8ac58cc71419.png

לוחצים על 'Import repository' כדי להתחיל את תהליך הייבוא.

6.‏ הוספת משתנים של צינור עיבוד נתונים ב-Bitbucket

בשלב הבא, מפעילים את צינור עיבוד הנתונים של Bitbucket CICD כדי להריץ בדיקת קוד כשדוחפים שינויים למאגר.

פותחים את המאגר ב-Bitbucket בדפדפן ועוברים לקטע Repository settings / PIPELINES / Settings". מפעילים צינורות עיבוד נתונים למאגר הזה.

8b431c2a83222546.png

עוברים לקטע Repository settings / PIPELINES / Repository variables".

מוסיפים 3 משתנים:

  • PROJECT_ID – מזהה הפרויקט שלכם ב-qwiklabs
  • LOCATION – us-central1
  • GOOGLE_CLOUD_CREDENTIALS

בערך המשתנה GOOGLE_CLOUD_CREDENTIALS, משתמשים במפתח של חשבון השירות שנוצר בקטע שלמעלה. מריצים את הפקודה הזו ב-Google Cloud Shell ומעתיקים/מדביקים את הערך.

cat ~/vertex-client-key.json

תצוגת המשתנים של המאגר:

fe2b8e768c09dc5b.png

7.‏ הפעלת צינור עיבוד נתונים של Bitbucket

פותחים את הקטע Pipelines ולוחצים על Run initial pipeline.

f97424bbfc790da8.png

בוחרים את ההסתעפות main ואת צינור עיבוד הנתונים default ולוחצים על Run.

8e7604e2f513360e.png

8.‏ בדיקת הפלט של צינור עיבוד הנתונים ב-Bitbucket

פותחים או מרעננים את הקטע Pipelines ובודקים את הפלט של צינור עיבוד הנתונים.

abf4fbdec6781ffd.png

335acbee3cba263f.png

התוצאות של הפקודה test coverage:

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 גנרטיבי. הוא מקבל את הקוד לבדיקה כקלט (הקשר) ופורמט פלט מועדף (פלט). הכלי משתמש במודל שפה גדול (LLM) כדי לנתח את הקוד ולבדוק את תקינות הקוד, היעילות שלו, יכולת התחזוקה שלו, האבטחה שלו והתאימות שלו לשיטות המומלצות. הפקודה יוצרת הנחיה מפורטת שמורה ל-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.‏ שכפול של מאגר Bitbucket והגדרת מפתח SSH

חוזרים לטרמינל של Google Cloud Shell ומגדירים מפתח SSH חדש.

מעדכנים את כתובת האימייל לפני שמריצים את הפקודות.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh
-add ~/.ssh/id_ed25519

cat
~/.ssh/id_ed25519.pub

מוסיפים מפתח גישה למאגר ב-Bitbucket.

פותחים את Repository settings / SECURITY / Access keys ולוחצים על 'הוספת מפתח'.

לערך המפתח, מעתיקים או מדביקים את הפלט של הפקודה האחרונה.

bac102fd433bb388.png

בקטע Source, לוחצים על Clone ומעתיקים את כתובת ה-URL.

571f4f775bcbd1f7.png

46c163d7e5356c67.png

חוזרים למסוף ומשכפלים את המאגר.

cd ~
mkdir bitbucket
cd bitbucket

מחליפים את הפרטים בכתובת ה-URL של הפרויקט והמאגר ב-Bitbucket.

git clone git@bitbucket.org:YOUR_PROJECT/genai-for-developers.git

משנים את הספרייה ופותחים את הקובץ bitbucket-pipelines.yml. אם שיניתם את שם המאגר במהלך הייבוא, עליכם לעדכן את שם התיקייה לפני שמריצים את הפקודות הבאות.

cd genai-for-developers

cloudshell edit bitbucket
-pipelines.yml

10.‏ הסבר על קוד באמצעות Gemini Code Assist

לוחצים לחיצה ימנית במקום כלשהו בקובץ bitbucket-pipelines.yml ובוחרים באפשרות Gemini Code Assist > Explain.

29ef71c136d173a2.png

הסבר על הבדיקה:

a183a2df0b6cc668.png

11.‏ פיתוח CLI של DevAI

בקטע הזה תבצעו שינויים ב-devai cli.

כדי להתחיל, מגדירים את python virtualenv, מתקינים את הדרישות ומריצים את הפקודה לדוגמה.

cd ~/bitbucket/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 ~/bitbucket/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.

9587123b62f12a55.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

הפקודה לבדיקה של כיסוי הבדיקה

devai review testcoverage -c ~/bitbucket/genai-for-developers/sample-app/src > testcoverage.md

cloudshell edit testcoverage
.md

פקודת בדיקת התאימות

devai review compliance --context ~/bitbucket/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 ~/bitbucket/genai-for-developers/sample-app/src/main/java > performance-review.md

cloudshell edit performance
-review.md

פקודת בדיקת האבטחה

devai review security -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > security-review.md

cloudshell edit security
-review.md

פקודות לבדיקה של גורמים שחוסמים את האתר

devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/setup.md

בדיקה וסיכום של תמונות או תרשימים

תרשים קלט[~/bitbucket/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

בודקים את הפקודה:

devai review image \
 
-f ~/bitbucket/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 ~/bitbucket/genai-for-developers/images/devai-api.png \
 
-t ~/bitbucket/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 ~/bitbucket/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
...

אפשר לעיין בפקודות ה-CLI הזמינות של devai ב-Cloud Shell Editor:

cloudshell edit ~/bitbucket/genai-for-developers/devai-cli/README.md

לחלופין, אפשר לעיין בקובץ README.md במאגר ב-GitHub.

12.‏ מעולה!

כל הכבוד, סיימת את הקודלאב!

הנושאים שעסקנו בהם:

  • הוספת שלבים לאוטומציה של בדיקת קוד ב-GenAI ב-Bitbucket
  • הרצת CLI של devai באופן מקומי

השלב הבא:

  • בקרוב נוסיף עוד סשנים מעשיים.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

©2024 Google LLC כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. שמות של חברות ומוצרים אחרים עשויים להיות סימנים מסחריים של החברות, בהתאמה, שאליהן הם משויכים.