1. نظرة عامة
في هذا التمرين العملي، ستعدّ خط أنابيب CICD وتدمجه مع Gemini لأتمتة خطوات مراجعة الرموز البرمجية.

ما ستتعلمه
في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ ما يلي:
- كيفية إضافة خطوات مبرمَجة لمراجعة الرموز البرمجية باستخدام الذكاء الاصطناعي التوليدي في GitHub وGitLab وCircleCI
- كيفية استخدام أدوات LangChain ReAct لتنفيذ مهام بشكل آلي، مثل التعليق على مشكلة في GitLab وفتح تذاكر JIRA
المتطلبات الأساسية
- يفترض هذا التمرين العملي معرفة بيئتَي Cloud Console وCloud Shell.
2. الإعداد والمتطلبات
إعداد مشروع على السحابة الإلكترونية
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



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

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

فعِّل Cloud AI Companion API باتّباع الخطوات التالية:

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

إليك بعض الطلبات التي يمكن تجربتها:
- اشرح Cloud Run في 5 نقاط رئيسية.
- أنا مدير منتجات Cloud Run في Google Cloud، وأريد شرح Cloud Run لطالب في 5 نقاط رئيسية قصيرة.
- أنت مدير منتجات Google Cloud Run، اشرح خدمة Cloud Run لمطوّر معتمد في Kubernetes في 5 نقاط رئيسية قصيرة.
- أنت مدير منتج Cloud Run في Google Cloud، اشرح متى يمكنك استخدام 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. اشترِك في Gemini 1.5 Pro مع قدرة استيعاب مليون رمز مميّز أو مزيد من المعلومات.
- تطبيق Gemini للويب (gemini.google.com)
تطبيق Google Gemini للويب (gemini.google.com) هو أداة مستندة إلى الويب مصمّمة لمساعدتك في استكشاف إمكانات نماذج الذكاء الاصطناعي Gemini من Google والاستفادة منها.
- تطبيق Google Gemini للأجهزة الجوّالة على Android وتطبيق Google على iOS
4. إنشاء حساب خدمة
فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

في نافذة الوحدة الطرفية التي تم فتحها، فعِّل الخدمات المطلوبة لاستخدام واجهات برمجة التطبيقات في Vertex AI ومحادثة Gemini.
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 في مستودع GitHub الشخصي
انتقِل إلى https://github.com/GoogleCloudPlatform/genai-for-developers/fork واختَر معرّف مستخدم GitHub كمالك.
ألغِ تحديد خيار نسخ الفرع "الرئيسي" فقط.
انقر على "Create fork".
6. تفعيل مهام سير عمل GitHub Actions
افتح مستودع GitHub المتفرّع في المتصفّح وانتقِل إلى علامة التبويب "Actions" لتفعيل سير العمل.

7. إضافة أسرار المستودع
أنشئ سر مستودع ضمن "Settings / Secrets and variables / Actions" في مستودع GitHub المتفرّع.
أضِف مفتاحًا سرّيًا للمستودع بالاسم "GOOGLE_API_CREDENTIALS".

انتقِل إلى نافذة/علامة تبويب Google Cloud Shell ونفِّذ الأمر التالي في وحدة Cloud Shell الطرفية.
cat ~/vertex-client-key.json
انسخ محتوى الملف والصقه كقيمة للمفتاح السري.

أضِف سر PROJECT_ID مع رقم تعريف مشروعك على Qwiklabs كقيمة 
8. تنفيذ سير عمل GitHub Actions
انتقِل إلى مستودع GitHub في المتصفّح وشغِّل سير العمل.
تم ضبط سير العمل ليتم تنفيذه عند إرسال الرمز أو تنفيذه يدويًا.
اختَر "GenAI For Developers" ضمن "جميع مهام سير العمل" وانقر على "Run workflow" باستخدام فرع "main".

مراجعة النتائج:

نتائج أمر تغطية الاختبار:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

نتائج أمر مراجعة الرمز البرمجي:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

نتائج أمر مراجعة الأداء:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

نتائج أمر مراجعة الأمان:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

نتائج أمر مراجعة العناصر التي تحظر التقدّم:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

9- إنشاء نسخة طبق الأصل من المستودع
ارجع إلى نافذة Cloud Shell الطرفية واستنسِخ المستودع.
أنشئ مجلدًا لمستودع GitHub.
mkdir github
cd github
استبدِل YOUR-GITHUB-USERID بمعرّف المستخدم الخاص بك على GitHub قبل تنفيذ الأوامر.
اضبط اسم مستخدم Git وعنوان البريد الإلكتروني في نافذة الأوامر.
عدِّل القيم قبل تنفيذ الأوامر.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git
غيِّر المجلد وافتح ملف سير العمل في "محرِّر Cloud Shell".
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
انتظِر إلى أن يظهر ملف الإعداد في بيئة التطوير المتكاملة.

10. تفعيل Gemini Code Assist
انقر على رمز "Gemini" في أسفل يسار الشاشة
.
انقر على "Login to Google Cloud" و "Select a Google Cloud Project".



من النافذة المنبثقة، اختَر مشروعك على Qwiklabs.

11. شرح الرمز البرمجي باستخدام Gemini Code Assist
انقر بزر الماوس الأيمن في أي مكان في ملف devai-review.yml واختَر Gemini Code Assist > Explain هذا.

شرح المراجعة:

12. تشغيل واجهة سطر الأوامر DEVAI محليًا
ارجع إلى "محرِّر Cloud Shell" وافتح "وحدة طرفية" جديدة.

ارجع إلى نافذة Cloud Shell الطرفية وشغِّل الأوامر أدناه لتثبيت devai محليًا.
pip3 install devai-cli
تم تثبيت واجهة سطر الأوامر ولكنّها غير متوفّرة في PATH.
WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
نفِّذ الأمر أدناه لتعديل متغيّر بيئة PATH. استبدِلها باسم المجلد الرئيسي للمستخدم. مثلاً: student_00_478dfeb8df15
export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin
نفِّذ أمر devai cli لإجراء مراجعة الرمز برمجيًا على جهازك. راجِع ناتج واجهة سطر الأوامر.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/github/genai-for-developers
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
افتح نص المراجعة البرمجي من خلال تنفيذ الأمر أدناه:
cloudshell edit devai-cli/src/devai/commands/review.py
انقر بزر الماوس الأيمن في أي مكان في ملف review.py واختَر Gemini Code Assist > Explain هذا.
مراجعة التفسير

13. تطوير واجهة سطر الأوامر (CLI) الخاصة بأداة DevAI
في هذا القسم، ستجري تغييرات على devai cli.
للبدء، عليك إعداد بيئة python virtualenv، وتثبيت المتطلبات، وتشغيل الأمر النموذجي.
cd ~/github/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
نفِّذ أمر مراجعة تغطية الاختبار للتأكّد من أنّ كل شيء يعمل بشكل جيد:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
راجِع النتائج باستخدام معاينة Markdown في Cloud Shell Editor.
أنشئ ملفًا جديدًا والصق ردّ Gemini فيه.
بعد ذلك، استخدِم "لوحة الأوامر" واختَر "Markdown: Open Preview".



14. استكشاف أوامر devai cli
أمر مراجعة الرمز البرمجي
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
أمر مراجعة الأداء
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
أمر مراجعة الأمان
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
أمر مراجعة تغطية الاختبار
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
أوامر مراجعة الحظر
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
مراجعة الصور/المخططات وتلخيصها:
مخطط الإدخال[~/github/genai-for-developers/images/extension-diagram.png]:

أمر المراجعة:
devai review image \
-f ~/github/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram"
إخراج:
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 ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/genai-for-developers/images/devai-api-slack.png
إخراج:
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 document readme -c ~/github/genai-for-developers/sample-app/src/main/
إخراج:
# Bank of Anthos - Balance Reader Service ## Table of Contents - [Description](#description) - [Features](#features) - [Technologies Used](#technologies-used) - [Installation](#installation) - [Configuration](#configuration) - [Usage](#usage) - [Health Checks](#health-checks) - [Metrics and Tracing](#metrics-and-tracing) - [Contributing](#contributing) - [License](#license) ## 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. - Exposes metrics to Stackdriver for monitoring and observability. - Supports distributed tracing with Zipkin. ## Technologies Used - Java - Spring Boot - Spring Data JPA - Hibernate - Google Cloud SQL (PostgreSQL) - JWT (JSON Web Token) - Guava Cache - Micrometer - Stackdriver - Zipkin ## Installation 1. **Prerequisites:** - Java 17 or later - Maven 3.5 or later - Docker (for containerization) - Kubernetes cluster (for deployment) - Google Cloud account (for Stackdriver and other GCP services)
راجِع أوامر devai cli المتاحة في "محرّر Cloud Shell":
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
أو يمكنك مراجعة ملف README.md في مستودع GitHub.
15. تتبُّع جميع متغيرات البيئة في ملف
ابدأ ملفًا جديدًا لتتبُّع جميع متغيرات البيئة (مثل مفاتيح واجهة برمجة التطبيقات ورموزها المميزة وما إلى ذلك) التي ستنشئها.
ستستخدمها للعديد من الأنظمة المختلفة عدة مرات أثناء التدرّب، لذا سيكون من الأسهل الرجوع إليها في مكان واحد.
16. إعدادات تتبُّع نماذج اللغات الكبيرة في LangSmith
أنشئ حسابًا على LangSmith وأنشئ مفتاح Service API في قسم "الإعدادات". https://docs.smith.langchain.com/
اضبط متغيّرات البيئة المطلوبة لعملية دمج LangSmith. استبدِل مفتاح واجهة برمجة التطبيقات للخدمة قبل تنفيذ الأوامر.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
لتجنُّب عرض المعلومات الحساسة في نافذة الأوامر، يُنصح باستخدام read -s، فهذه طريقة آمنة لضبط متغيرات البيئة بدون ظهور القيمة في سجلّ الأوامر في وحدة التحكّم. بعد تشغيله، عليك لصق القيمة والضغط على مفتاح الإدخال.
17. ضبط إعدادات أوامر JIRA
أنشئ حسابًا على JIRA إذا لم يكن لديك حساب.
أنشئ رمزًا مميزًا لواجهة برمجة التطبيقات في JIRA لمشروعك. https://id.atlassian.com/manage-profile/security/api-tokens
اضبط متغيرات البيئة المطلوبة لدمج JIRA (استبدِل القيم قبل تنفيذ الأوامر).
export JIRA_API_TOKEN=your-token-value
export JIRA_USERNAME="email that you used to register with JIRA"
export JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="JIRA project key"
export JIRA_CLOUD=true
فتح ملف review.py:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
مراجعة الملف "review.py":
source=source.format(format_files_as_string(context))
code_chat_model = GenerativeModel(model_name)
code_chat = code_chat_model.start_chat()
code_chat.send_message(qry)
response = code_chat.send_message(source)
...
else:
click.echo(response.text)
ابحث عن السطر أدناه وأزِل التعليق منه:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
استيراد أمر JIRA في أعلى الملف
# from devai.commands.jira import create_jira_issue
طريقة إنشاء مشكلة في JIRA باستخدام الطريقة code
#create_jira_issue("Code Review Results", response.text)
أعِد تشغيل أمر مراجعة الرمز وتحقَّق من ناتج الوكيل:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
مثال على الناتج:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader /home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead. warn_deprecated( Response from Model: ```java // Class: TransactionRepository // Method: findBalance // Efficiency - Consider using a native SQL query to improve performance for complex database operations. - Use prepared statements to avoid SQL injection vulnerabilities. // Best Practices - Return a Optional<Long> instead of null to handle the case when no balance is found for the given account.
/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function __call__ was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. استخدِم invoke بدلاً من ذلك. warn_deprecated(
جارٍ إدخال سلسلة AgentExecutor جديدة... الفكرة: الوصف متوفّر في السؤال، لذا لا داعي للتفكير. الإجراء:
{
"action": "create_issue",
"action_input": {
"description": "Class: TransactionRepository\nMethod: findBalance\n\nEfficiency\n- Consider using a native SQL query to improve performance for complex database operations.\n- Use prepared statements to avoid SQL injection vulnerabilities.\n\nBest Practices\n- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account."
}
}
تم إنشاء مشكلة جديدة باستخدام المفتاح: CYMEATS-117
Observation: New issue created with key: CYMEATS-117 Thought:Final Answer: CYMEATS-117
سلسلة مكتملة
Open your JIRA project in the browser and review the created issue.
Sample JIRA issue view.
<img src="img/9a93a958c30f0b51.png" alt="9a93a958c30f0b51.png" width="624.00" />
Open [LangSmith portal](https://smith.langchain.com/) and review LLM trace for JIRA issue creation call.
Sample LangSmith LLM trace.
<img src="img/6222ee1653a5ea54.png" alt="6222ee1653a5ea54.png" width="624.00" />
## Import GitHub repo to GitLab repo
Go to [https://gitlab.com/projects/new](https://gitlab.com/projects/new) and select "`Import project`" / "`Repository by URL`" option:
Git repository url:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Or
Your personal GitHub project that you created earlier in this lab.
Under Project URL - select your GitLab userid
Set Visibility to `Public`.
Click - "`Create Project`" to start the import process.
If you see an error about invalid GitHub Repository URL, [create a new GitHub token](https://github.com/settings/tokens)(fine-grained) with Public repositories read-only access, and retry import again providing your GitHub userid and token.
## Clone GitLab repo and setup SSH key
Return to Google Cloud Shell terminal and set up a new SSH key.
Update your email before running the commands. Hit enter multiple times to accept defaults.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Add a public key to your GitLab account.
Open [https://gitlab.com/-/profile/keys](https://gitlab.com/-/profile/keys) and click "Add new key".
For the key value copy/paste the output of the last command.
Go back to the terminal and clone the repository.
cd ~ mkdir gitlab cd gitlab
Replace with your GitLab userid and repository url that was just created.
```console
git clone git@gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
غيِّر الدليل وافتح الملف .gitlab-ci.yml.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
إذا لم يسبق لك تفعيل Gemini، فعِّله في "محرّر Cloud Shell".

انقر بزر الماوس الأيمن في أي مكان في ملف .gitlab-ci.yml واختَر "Gemini Code Assist > Explain this".

18 إعدادات أوامر GitLab
افتح GitLab وأنشئ رمز دخول مميزًا للمشروع ضمن "Settings / Access Tokens" في مستودع GitLab الذي تم إنشاؤه في الخطوات السابقة.
انسخ قيمة رمز الدخول وخزِّنها لاستخدامها في الخطوات التالية.
استخدِم التفاصيل التالية:
- اسم الرمز المميز:
devai-cli-qwiklabs - الدور:
Maintainer - النطاق:
api

اضبط متغيّرات البيئة المطلوبة لدمج GitLab.
يتطلّب هذا الأمر تعديل رمز الدخول المميز في GitLab.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
يتطلّب هذا الأمر تعديل معرّف مستخدم GitLab واسم المستودع.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
اضبط بقية متغيرات البيئة:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
افتح موقع GitLab الإلكتروني وأنشئ مشكلة جديدة في GitLab في مشروعك بعنوان "CICD AI Insights".

يمكنك أيضًا استخدام أمر curl أدناه. ستحتاج إلى رقم تعريف مشروع GitLab، ويمكنك البحث عنه ضمن القسم "Settings / General".
export GITLAB_PROJECT_ID=56390153 # replace
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_PERSONAL_ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"title":"CICD AI Insights"}' \
https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/issues
ارجع إلى Cloud Shell وافتح الملف review.py:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
ابحث عن الرمز أدناه وأزِل التعليق منه
سطر لاستيراد أمر GitLab
# from devai.commands.gitlab import create_gitlab_issue_comment
طريقة التعليق على مشكلة في GitLab
# create_gitlab_issue_comment(response.text)
19. تطوير DevAI CLI
بما أنّك انتقلت إلى مستودع/دليل GitLab. عليك إعادة تنفيذ خطوات الإعداد أدناه.
في الوحدة الطرفية، اضبط بيئة python الافتراضية، وثبِّت المتطلبات، وشغِّل الأمر النموذجي.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
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
يمكنك تأكيد موقع cli، ويجب أن يكون هذه المرة ضمن مجلد GitLab.
which devai
أعِد تشغيل أمر مراجعة الرمز البرمجي في الوحدة الطرفية:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
مثال على الناتج - مع تقصير بعض الأقسام:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
.
.
Response from Model: **Class: Transaction**
**Method: toString**
**Maintainability:**
* The formatting of the string representation could be more clear and concise. Consider using a dedicated method for formatting the amount, e.g., `formatAmount()`.
.
.
> Entering new AgentExecutor chain...
Thought: I need to first get the issue ID using the Get Issues tool, then I can comment on the issue using the Comment on Issue tool.
Action: Get Issues
Action Input:
Observation: Found 1 issues:
[{'title': 'CICD AI Insights', 'number': 1}]
Thought:Thought: I found the issue ID, so now I can add the comment to the issue.
Action: Comment on Issue
Action Input: 1
Action: Get Issue
Action Input: 1
Observation: {"title": "CICD AI Insights", "body": "", "comments": "[{'body': '**Transaction.java**\\n\\n\\n**Class:** Transaction\\n\\n\\n* **Security:** Consider using a custom date format like \\\\\"yyyy-MM-dd HH:mm:ss.SSS\\\\\" to handle timestamps more robustly.\\n\\n\\n**JWTVerifierGenerator.java**\\n\\n\\n* .
.
Thought:Now I can use the Comment on Issue tool to add the comment to the issue.
Action: Comment on Issue
Action Input:
1
**Class: Transaction**
**Method: toString**
**Maintainability:**
.
.
.
Observation: Commented on issue 1
Thought:I have now completed the necessary actions and added the comment to the issue 'CICD AI Insights'.
Final Answer: Comment added to issue 'CICD AI Insights'
> Finished chain.
افتح موقع GitLab الإلكتروني وراجِع المشكلة المعدَّلة.

راجِع عملية تتبُّع النموذج اللغوي الكبير في LangSmith.
نموذج لتتبُّع نموذج لغوي كبير

20. إرسال التغييرات إلى مستودع GitLab
ارجع إلى Google Cloud Shell Editor.
انتقِل إلى علامة التبويب "Source Control".
أضِف التغييرات التي أجريتها إلى مرحلة الإعداد، ثم نفِّذها، ثم أرسِلها لتعديل ملف review.py.

21. إعدادات CICD في GitLab
بعد ذلك، ستفعّل مسار CICD في GitLab لتشغيل مراجعة التعليمات البرمجية عند إرسال التغييرات إلى المستودع.
افتح موقع GitLab الإلكتروني وانتقِل إلى القسم "Settings / CICD"".
وسِّع قسم Variables وانقر على "Add variable".
احرص على إزالة العلامة من جميع مربّعات الاختيار عند إضافة المتغيّرات. مثال:

باستخدام ملاحظاتك التي تحتفظ فيها بجميع متغيرات البيئة، أضِف متغيرات البيئة إلى JIRA وGitLab وLangSmith.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
بالنسبة إلى قيمة المتغيّر GOOGLE_CLOUD_CREDENTIALS، استخدِم مفتاح حساب الخدمة الذي تم إنشاؤه في القسم أعلاه.
cat ~/vertex-client-key.json
طريقة عرض متغيرات التكامل المستمر/التسليم المستمر:

22. تشغيل مسار CICD في GitLab
افتح "Build / Pipelines" في واجهة مستخدم GitLab وانقر على "Run Pipeline".

23. مراجعة ناتج مسار GitLab
افتح "Build / Jobs" في واجهة مستخدم GitLab وراجِع نتائج أنابيب التجزئة.

افتح موقع GitLab الإلكتروني وراجِع التعليقات المعدَّلة بشأن المشكلة "CICD Insights".
إيقاف تنفيذ سير عمل GitLab
ارجع إلى Google Cloud Shell Editor. أزِل التعليق من الأسطر لإيقاف تنفيذ سير عمل GitLab عند وقوع أحداث دفع الرمز. سيظل بإمكانك تنفيذ سير العمل من واجهة المستخدم عند الطلب.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
افتح ملف .gitlab-ci.yml في جذر المشروع وأزِل التعليق من الأسطر التالية:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
انتقِل إلى علامة التبويب "Source Control" - أضِف هذا التغيير وأرسِله.

24. دمج CircleCI
ما هي CircleCI؟
CircleCI هي منصة CI/CD مستندة إلى السحابة الإلكترونية تتيح للفِرق أتمتة عمليات تطوير البرامج ونشرها. يتكامل مع أنظمة التحكّم في الإصدارات، مثل GitHub وBitbucket وGitLab، ما يتيح للفِرق التحقّق من صحة تغييرات الرموز في الوقت الفعلي من خلال تنفيذ الاختبارات وعمليات الإنشاء المبرمَجة. بالنسبة إلى التسليم المتواصل، يمكن لـ CircleCI أتمتة عملية نشر البرامج على بيئات سحابية مختلفة، مثل AWS وGoogle Cloud وAzure.
الإعداد
افتح موقع CircleCI الإلكتروني وأنشئ مشروعًا جديدًا. اختَر "GitLab" أو "Cloud" للمستودع.
امنح CircleCI إذن الوصول إلى حسابك على GitLab.
ضمن الخيار "الأسرع"، اختَر فرع main. قد يرصد CircleCI ملف إعداد حالي ويتخطّى هذه الخطوة.

بعد إنشاء المشروع، انقر على القسم "Project Settings" / "Environment Variables".

أضِف جميع متغيرات البيئة التي استخدمتها حتى الآن.

في ما يلي نموذج لقائمة بمتغيرات البيئة التي يجب إضافتها.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
25. تفعيل طريقتَي JIRA وGitLab
افتح "محرِّر Google Cloud Shell" وأجرِ تغييرًا على الملف review.py.
ابحث عن الأسطر أدناه وأزِل التعليق منها.
# from devai.commands.jira import create_jira_issue
create_jira_issue("Performance Review Results", response.text)
create_gitlab_issue_comment(response.text)
.
.
.
create_jira_issue("Security Review Results", response.text)
create_gitlab_issue_comment(response.text)
انتقِل إلى علامة التبويب "Source Control" - أضِف هذا التغيير وأرسِله.
افتح موقع GitLab الإلكتروني وانتقِل إلى "Build" / "Pipelines".

اتّبِع الرابط إلى CircleCI لمراجعة سير العمل.

راجِع التعليقات على مشكلة GitLab في المستودع.


راجِع المشاكل الجديدة التي تم إنشاؤها في مشروع JIRA.

26. تهانينا!
تهانينا، لقد أكملت الدرس التطبيقي.
المواضيع التي تناولناها:
- إضافة خطوات التشغيل الآلي لمراجعة الرموز البرمجية باستخدام الذكاء الاصطناعي التوليدي في GitHub وGitLab وCircleCI
- تستخدم LangChain ReAct agents لتنفيذ مهام تلقائية، مثل التعليق على مشكلة في GitLab وفتح تذاكر JIRA.
الخطوة التالية:
- سنقدّم المزيد من الجلسات العملية قريبًا.
تَنظيم
لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.
حذف المشروع
أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.
© 2024 Google LLC. جميع الحقوق محفوظة. Google وشعار Google هما علامتان تجاريتان (TM) تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.