Bitbucket: التشغيل الآلي لمراجعة الرموز باستخدام الذكاء الاصطناعي التوليدي

1. نظرة عامة

في هذا التمرين العملي، ستعمل على إعداد مسار Bitbucket ودمجه مع Gemini لتنفيذ خطوات مراجعة الرموز البرمجية آليًا.

92eff32c1969388f.png

ما ستتعلمه

في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ ما يلي:

  • كيفية إضافة خطوات مراجعة الرموز البرمجية آليًا باستخدام الذكاء الاصطناعي التوليدي في Bitbucket
  • كيفية تشغيل واجهة سطر الأوامر devai محليًا لأتمتة مراجعات الرموز البرمجية

المتطلبات الأساسية

  • يفترض هذا التمرين العملي معرفة بيئتَي Cloud Console وCloud Shell.

2. الإعداد والمتطلبات

إعداد مشروع على السحابة الإلكترونية

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

افتح محادثة Gemini.

bc3c899ac8bcf488.png

أو اكتب "اسأل Gemini" في شريط البحث.

e1e9ad314691368a.png

فعِّل واجهة برمجة التطبيقات Gemini for Google Cloud API باتّباع الخطوات التالية:

990a0ceea7d05531.png

انقر على "Start chatting" واتّبِع أحد الأسئلة النموذجية أو اكتب طلبك الخاص لتجربته.

ed120d672468b412.png

إليك بعض الطلبات التي يمكن تجربتها:

  • اشرح Cloud Run في 5 نقاط رئيسية.
  • أنا مدير منتج Cloud Run في Google Cloud، وأريد شرح Cloud Run لطالب في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتج في Google Cloud Run، اشرح خدمة Cloud Run لمطوّر معتمد في Kubernetes في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتج في Google Cloud Run، اشرح متى تستخدم Cloud Run بدلاً من GKE لمطوّر أقدم في 5 نقاط رئيسية قصيرة.

يمكنك الاطّلاع على دليل الطلبات لمعرفة المزيد حول كتابة طلبات أفضل.

كيف يستخدم "Gemini في Google Cloud" بياناتك؟

التزام Google بالخصوصية

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

البيانات التي ترسلها وتتلقّاها

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

تشفير الطلبات

عند إرسال طلبات إلى Gemini، يتم تشفير بياناتك أثناء نقلها كمدخلات إلى النموذج الأساسي في Gemini.

بيانات البرنامج من إنشاء Gemini

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

مزيد من المعلومات حول طريقة Google في معالجة طلباتك

3- خيارات لاختبار الطلبات

إذا أردت تغيير/توسيع طلبات devai cli الحالية، لديك عدة خيارات لذلك.

‫Vertex AI Studio هو جزء من منصة Vertex AI من Google Cloud، وهو مصمَّم خصيصًا لتبسيط عملية تطوير نماذج الذكاء الاصطناعي التوليدي وتسريعها واستخدامها.

‫Google AI Studio هي أداة مستندة إلى الويب تتيح إنشاء نماذج أولية وتجربة هندسة الطلبات وGemini API.

تطبيق Google Gemini للويب (gemini.google.com) هو أداة مستندة إلى الويب مصمّمة لمساعدتك في استكشاف إمكانات نماذج الذكاء الاصطناعي Gemini من Google والاستفادة منها.

4. إنشاء حساب خدمة

فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

3e0c761ca41f315e.png

في نافذة الوحدة الطرفية التي تم فتحها، فعِّل الخدمات المطلوبة لاستخدام واجهات برمجة التطبيقات في Vertex AI ومحادثة Gemini.

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

إذا طُلب منك منح الإذن، انقر على "منح الإذن" للمتابعة.

6356559df3eccdda.png

نفِّذ الأوامر التالية لإنشاء حساب خدمة ومفاتيح جديدة.

ستستخدم حساب الخدمة هذا لإجراء طلبات البيانات من واجهة برمجة التطبيقات إلى 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

بعد ذلك، عليك تفعيل مسار CICD في Bitbucket لتشغيل مراجعة الرموز البرمجية عند إرسال التغييرات إلى المستودع.

افتح مستودع 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

نتائج أمر تغطية الاختبار:

devai review testcoverage -c ./sample-app/src

يحلّل الأمر devai review testcoverage الرمز البرمجي ومجموعة الاختبار المرتبطة به، إذا كانت متاحة، باستخدام نموذج الذكاء الاصطناعي التوليدي Gemini. وتقيّم تغطية الاختبار للرمز البرمجي المقدَّم، وتحدّد الملفات والطُرق التي تتضمّن اختبارات الوحدات وتلك التي لا تتضمّنها. يستفيد الأمر بعد ذلك من النموذج لتقديم ملخّص عن التغطية، بما في ذلك مقاييس مثل الأسطر والفروع/الشروط التي تمت تغطيتها. واستنادًا إلى التحليل، يقدّم اقتراحات لتحسين تغطية الاختبار، ويقترح اختبارات معيّنة لإضافتها، ويقدّم نصائح عامة بشأن أفضل ممارسات الاختبار. وأخيرًا، يعرض ردّ نموذج Gemini الذي يتضمّن تفاصيل، مثل الملفات التي لا تتوفّر لها تغطية، واقتراحات لتحسين الاختبارات الحالية للمستخدم من خلال سطر الأوامر.

نتائج أمر مراجعة الرمز البرمجي:

devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

ينفّذ الأمر devai review code مراجعة شاملة لمقتطف الرمز البرمجي المقدَّم باستخدام نموذج الذكاء الاصطناعي التوليدي. يأخذ هذا النموذج الرمز المراد مراجعته كمدخل (السياق) وتفضيل تنسيق الإخراج (الإخراج). تستفيد هذه الأداة من نموذج لغوي كبير لتحليل الرمز البرمجي من حيث صحته وكفاءته وسهولة صيانته وأمانه والتزامه بأفضل الممارسات. ينشئ الأمر طلبًا تفصيليًا يوجّه 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. تطوير واجهة سطر الأوامر 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
...

راجِع أوامر devai cli المتاحة في "محرّر Cloud Shell":

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

أو يمكنك مراجعة ملف README.md في مستودع GitHub.

12. تهانينا!

تهانينا، لقد أكملت درس البرمجة.

المواضيع التي تناولناها:

  • إضافة خطوات مراجعة الرموز البرمجية آليًا باستخدام الذكاء الاصطناعي التوليدي في Bitbucket
  • تشغيل أداة سطر الأوامر devai محليًا

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

  • سنقدّم المزيد من الجلسات العملية قريبًا.

تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.

‎© 2024 Google LLC. جميع الحقوق محفوظة. ‫Google وشعار Google هما علامتان تجاريتان (TM) تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.