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

Что вы узнаете
В этой лабораторной работе вы научитесь выполнять следующие действия:
- Как добавить этапы автоматизации проверки кода GenAI в Bitbucket
- Как запустить CLI Devai локально для автоматизации проверки кода
Предварительные требования
- Для выполнения этой лабораторной работы предполагается знакомство со средами Cloud Console и Cloud Shell.
2. Настройка и требования
Настройка облачного проекта
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

Или введите "Спроси Близнецов" в строку поиска.

Включите Gemini для Google Cloud API:

Нажмите « Start chatting » и ответьте на один из примеров вопросов или введите свой собственный вопрос, чтобы попробовать.

Варианты для выполнения:
- Опишите Cloud Run в 5 ключевых пунктах.
- Вы — менеджер по продукту Google Cloud Run, объясните студенту принцип работы Cloud Run в 5 кратких ключевых моментах.
- Вы — менеджер по продукту Google Cloud Run. Объясните Cloud Run сертифицированному разработчику Kubernetes в 5 кратких ключевых моментах.
- Вы — менеджер по продукту Google Cloud Run. Объясните старшему разработчику в 5 кратких ключевых моментах, когда следует использовать Cloud Run, а когда GKE.
Ознакомьтесь с руководством по составлению подсказок, чтобы узнать больше о том, как писать более эффективные подсказки.
Как Gemini для Google Cloud использует ваши данные
Обязательства Google в отношении конфиденциальности
Google одной из первых в отрасли опубликовала обязательство по обеспечению конфиденциальности в сфере ИИ/машинного обучения , в котором изложена наша убежденность в том, что клиенты должны иметь высочайший уровень безопасности и контроля над своими данными , хранящимися в облаке.
Данные, которые вы предоставляете и получаете
Вопросы, которые вы задаете Gemini, включая любую входную информацию или код, который вы отправляете Gemini для анализа или завершения, называются подсказками. Ответы или завершение кода, которые вы получаете от Gemini, называются ответами. Gemini не использует ваши подсказки или свои ответы в качестве данных для обучения своих моделей .
Шифрование подсказок
При отправке запросов в Gemini ваши данные шифруются во время передачи и используются в качестве входных данных для базовой модели в Gemini.
Программные данные сгенерированы из Gemini
Gemini обучается на собственном коде Google Cloud, а также на выбранном коде сторонних разработчиков. Вы несете ответственность за безопасность, тестирование и эффективность своего кода , включая любое автозавершение, генерацию или анализ кода, которые предлагает вам Gemini.
Узнайте больше о том, как Google обрабатывает ваши запросы.
3. Варианты для проверки подсказок.
Если вы хотите изменить/расширить существующие командные строки Devai, у вас есть несколько вариантов для этого.
Vertex AI Studio — это часть платформы Vertex AI от Google Cloud, специально разработанная для упрощения и ускорения разработки и использования моделей генеративного искусственного интеллекта.
Google AI Studio — это веб-инструмент для прототипирования и экспериментирования с оперативной разработкой и API Gemini.
- Веб-приложение Gemini (gemini.google.com)
Веб-приложение Google Gemini (gemini.google.com) — это веб-инструмент, разработанный для того, чтобы помочь вам изучить и использовать возможности моделей искусственного интеллекта Google Gemini.
- Мобильное приложение Google Gemini для Android и приложение Google для iOS.
4. Создайте учетную запись службы.
Активируйте Cloud Shell, нажав на значок справа от строки поиска.

В открытом терминале включите необходимые службы для использования API Vertex AI и чата Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Если появится запрос на авторизацию, нажмите «Авторизовать», чтобы продолжить.

Выполните следующие команды для создания новой учетной записи службы и ключей.
Вы будете использовать этот сервисный аккаунт для выполнения вызовов 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 ".

URL репозитория Git:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Выберите свою рабочую область и проект и укажите имя для нового репозитория.

Нажмите кнопку « Import repository », чтобы начать процесс импорта.
6. Добавьте переменные конвейера Bitbucket.
Далее вам нужно будет включить конвейер CICD Bitbucket для выполнения проверки кода при отправке изменений в репозиторий.
Откройте репозиторий Bitbucket в браузере и перейдите в раздел "Настройки Repository settings / PIPELINES / Settings" . Включите конвейеры для этого репозитория.

Перейдите в раздел "Настройки 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
Представление переменных репозитория:

7. Запустите конвейер Bitbucket.
Откройте раздел « Pipelines » и нажмите « Run initial pipeline ».

Выберите ветку " main " и конвейер " default " и нажмите " Run ".

8. Просмотрите выходные данные конвейера Bitbucket.
Откройте/обновите раздел « Pipelines » и просмотрите результаты работы конвейера.


Результаты выполнения команды проверки покрытия кода тестами :
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 » и нажмите «Добавить ключ».
Для ввода значения ключа скопируйте/вставьте вывод последней команды.

В разделе « Source » нажмите « Clone » и скопируйте URL-адрес.


Вернитесь в терминал и клонируйте репозиторий.
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 this.

Пояснение к обзору:

11. Разработка CLI для DevAI
В этом разделе вы будете вносить изменения в интерфейс командной строки Devai.
Для начала настройте виртуальное окружение 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 ".



Команда проверки покрытия тестами
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 ]:

Проверка команды:
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:
cloudshell edit ~/bitbucket/genai-for-developers/devai-cli/README.md
Или просмотрите файл README.md в репозитории GitHub.
12. Поздравляем!
Поздравляем, вы завершили практическое занятие!
Что мы рассмотрели:
- Добавление шагов автоматизации проверки кода GenAI в Bitbucket
- Запуск devai cli локально
Что дальше:
- Впереди еще больше практических занятий!
Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий эти ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избежать выставления счетов — удалить проект, созданный для этого урока.
©2024 Google LLC. Все права защищены. Google и логотип Google являются товарными знаками Google LLC. Все остальные названия компаний и продуктов могут являться товарными знаками соответствующих компаний, с которыми они связаны.