Bitbucket — автоматизация проверки кода с помощью GenAI

Bitbucket — автоматизация проверки кода с помощью GenAI

О практической работе

subjectПоследнее обновление: мар. 24, 2025
account_circleАвторы: Andrey Shakirov

1. Обзор

В ходе этой лабораторной работы вы настроите конвейер Bitbucket и интегрируете его с Gemini для автоматизации этапов проверки кода.

92eff32c1969388f.png

Что вы узнаете

В этой лабораторной работе вы научитесь делать следующее:

  • Как добавить этапы автоматизации проверки кода GenAI в Bitbucket
  • Как запустить devai cli локально для автоматизации проверки кода

Предварительные условия

  • Эта лабораторная работа предполагает знакомство со средами Cloud Console и Cloud Shell.

2. Настройка и требования

Настройка облачного проекта

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Настройка среды

Откройте чат Близнецов.

bc3c899ac8bcf488.png

Или введите «Спросить Близнецов» в строке поиска.

e1e9ad314691368a.png

Включите Gemini для 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, в пяти кратких ключевых моментах.

Ознакомьтесь с Руководством по подсказкам , чтобы узнать больше о написании более эффективных подсказок.

Как 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 — это веб-инструмент для создания прототипов и экспериментов с быстрым проектированием и API Gemini.

Веб-приложение Google Gemini (gemini.google.com) — это веб-инструмент, разработанный, чтобы помочь вам изучить и использовать возможности моделей искусственного интеллекта Gemini от Google.

4. Создать учетную запись службы

Активируйте Cloud Shell, щелкнув значок справа от панели поиска.

3e0c761ca41f315e.png

В открывшемся терминале включите необходимые сервисы для использования API Vertex AI и чата Gemini.

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

Далее вы включите конвейер 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, форматируя его в уценку, 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

Замените на свой проект Bitbucket и URL-адрес репозитория.

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 CLI

В этом разделе вы будете вносить изменения в devai cli.

Для начала настройте виртуальную среду Python, установите требования и запустите пример команды.

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.

Затем используйте палитру команд и выберите « 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. Поздравляем!

Поздравляем, вы завершили работу над кодом!

Что мы рассмотрели:

  • Добавление шагов автоматизации проверки кода GenAI в Bitbucket
  • Запуск Devai Cli локально

Что дальше:

  • Впереди еще больше практических занятий!

Очистить

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.

Удаление проекта

Самый простой способ избавиться от выставления счетов — удалить проект, созданный вами для этого руководства.

© Google LLC, 2024. Все права защищены. Google и логотип Google являются товарными знаками Google LLC. Все остальные названия компаний и продуктов могут быть товарными знаками соответствующих компаний, с которыми они связаны.