GitHub - Code Review Automation with GenAI

1. Genel Bakış

Bu laboratuvarda, GitHub Actions iş akışını ayarlayacak ve kod inceleme adımlarını otomatikleştirmek için Gemini ile entegre edeceksiniz.

2bab73f63b927f93.png

Öğrenecekleriniz

Bu laboratuvarda aşağıdakileri nasıl yapacağınızı öğreneceksiniz:

  • GitHub'da GenAI kod inceleme otomasyon adımlarını ekleme
  • Kod incelemelerini otomatikleştirmek için devai cli'yi yerel olarak çalıştırma

Ön koşullar

  • Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarına aşina olmanız gerekir.

2. Kurulum ve Gereksinimler

Cloud projesi oluşturma

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcılarının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.

Ortam Kurulumu

Gemini sohbetini açın.

bc3c899ac8bcf488.png

Alternatif olarak, arama çubuğuna "Gemini'ye sor" yazın.

e1e9ad314691368a.png

Cloud AI Companion API'yi etkinleştirin:

66cb6e561e384bbf.png

"Start chatting" simgesini tıklayın ve örnek sorulardan birini uygulayın veya denemek için kendi isteminizi yazın.

5482c153eef23126.png

Deneyebileceğiniz istemler:

  • Cloud Run'u 5 temel noktada açıklayın.
  • Google Cloud Run Ürün Müdürü olduğunuzu varsayarak bir öğrenciye Cloud Run'u 5 kısa ve önemli noktayla açıklayın.
  • Google Cloud Run Ürün Müdürü olarak, Cloud Run'u Sertifikalı bir Kubernetes Geliştiricisine 5 kısa ve önemli noktayla açıklayın.
  • Google Cloud Run Ürün Müdürü olduğunuzu varsayalım. Kıdemli bir geliştiriciye, Cloud Run'u ne zaman GKE yerine kullanacağınızı 5 kısa ve önemli noktayla açıklayın.

Daha iyi istemler yazma hakkında daha fazla bilgi edinmek için İstem Rehberi'ne göz atın.

Google Cloud için Gemini, verilerinizi nasıl kullanır?

Google'ın gizlilik taahhüdü

Google, sektörde AI/ML gizlilik taahhüdü yayınlayan ilk şirketlerden biri oldu. Bu taahhüdümüzde, müşterilerin bulutta depolanan verileri üzerinde en yüksek düzeyde güvenlik ve denetime sahip olması gerektiğine olan inancımızı özetliyoruz.

Gönderdiğiniz ve aldığınız veriler

Gemini'ye sorduğunuz sorulara (analiz etmesi veya tamamlaması için Gemini'ye gönderdiğiniz giriş bilgileri veya kodlar dahil) istem denir. Gemini'den aldığınız yanıtlara veya kod tamamlamalarına yanıt denir. Gemini, istemlerinizi veya yanıtlarını modellerini eğitmek için veri olarak kullanmaz.

İstemlerin şifrelenmesi

Gemini'ye istem gönderdiğinizde, Gemini'deki temel modele giriş olarak verileriniz aktarılırken şifrelenir.

Gemini'den oluşturulan program verileri

Gemini, birinci taraf Google Cloud kodunun yanı sıra belirli üçüncü taraf kodlarıyla eğitilmiştir. Gemini'nin sunduğu kod tamamlama, oluşturma veya analizler dahil olmak üzere kodunuzun güvenliği, test edilmesi ve etkililiğinden siz sorumlusunuz.

Google'ın istemlerinizi nasıl işlediği hakkında daha fazla bilgi edinin.

3. İstemleri test etme seçenekleri

Mevcut devai cli istemlerini değiştirmek/uzatmak istiyorsanız bunun için birkaç seçeneğiniz vardır.

Vertex AI Studio, Google Cloud'un Vertex AI platformunun bir parçasıdır ve üretken yapay zeka modellerinin geliştirilmesini ve kullanımını basitleştirmek ve hızlandırmak için özel olarak tasarlanmıştır.

Google AI Studio, istem mühendisliği ve Gemini API ile prototip oluşturmak ve denemeler yapmak için web tabanlı bir araçtır.

Google Gemini web uygulaması (gemini.google.com), Google'ın Gemini yapay zeka modellerinin gücünü keşfetmenize ve kullanmanıza yardımcı olmak için tasarlanmış web tabanlı bir araçtır.

4. Hizmet Hesabı Oluşturma

Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

3e0c761ca41f315e.png

Açılan terminalde, Vertex AI API'lerini ve Gemini sohbetlerini kullanmak için gerekli hizmetleri etkinleştirin.

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

Yetki vermeniz istenirse devam etmek için "Yetkilendir"i tıklayın.

6356559df3eccdda.png

Yeni bir hizmet hesabı ve anahtarlar oluşturmak için aşağıdaki komutları çalıştırın.

Bu hizmet hesabını, CICD ardışık düzenlerinden Vertex AI Gemini API'ye API çağrıları yapmak için kullanacaksınız.

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 deposunu kişisel GitHub deponuza çatallama

https://github.com/GoogleCloudPlatform/genai-for-developers/fork adresine gidin ve GitHub kullanıcı kimliğinizi sahip olarak seçin.

Yalnızca "main" dalını kopyalama seçeneğinin işaretini kaldırın.

"Create fork" öğesini tıklayın.

6. GitHub Actions iş akışını etkinleştirme

Çatallanan GitHub deposunu tarayıcıda açın ve iş akışlarını etkinleştirmek için "Actions" sekmesine geçin.

1cd04db9b37af7cf.png

7. Depo Gizli Anahtarları Ekleme

Çatallanan GitHub deposunda "Settings / Secrets and variables / Actions" altında bir depo gizli anahtarı oluşturun.

"GOOGLE_API_CREDENTIALS" adlı bir depo gizli anahtarı ekleyin.

94cbe2778bef25eb.png

Google Cloud Shell penceresine/sekmesine geçin ve Cloud Shell terminalinde aşağıdaki komutu çalıştırın.

cat ~/vertex-client-key.json

Dosya içeriğini kopyalayıp gizli anahtar değeri olarak yapıştırın.

915579a97f8f2ced.png

Qwiklabs proje kimliğinizi değer olarak kullanarak PROJECT_ID gizli anahtarını ekleyin:

4fa92833ce615a36.png

8. GitHub Actions iş akışını çalıştırma

Tarayıcıda GitHub deponuza gidin ve iş akışını çalıştırın.

İş akışı, kod yayınlama veya manuel yürütme üzerinde çalışacak şekilde yapılandırılmıştır.

da11273b4b54f7b6.png

Sonuçları inceleyin:

cf49aa41980aacc5.png

Test kapsamı komutunun sonuçları:

devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

3b21bd4639524763.png

Kod inceleme komutunun sonuçları:

devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

4876dbc2e0042943.png

Performans inceleme komutunun sonuçları:

devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

98dd2472b2e819bf.png

Güvenlik incelemesi komutunun sonuçları:

devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

7d180a763db92d56.png

Engelleyiciler, komutun sonuçlarını inceler:

devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

726175e874aefcf.png

9. Depoyu klonlama

Cloud Shell terminaline dönün ve deposu klonlayın.

Komutları çalıştırmadan önce YOUR-GITHUB-USERID yerine GitHub kullanıcı kimliğinizi girin.

git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git 

Klasörü değiştirin ve Cloud Shell Düzenleyici'de iş akışı dosyasını açın.

cd genai-for-developers

cloudshell edit .github/workflows/devai-review.yml 

Yapılandırma dosyasının IDE'de gösterilmesini bekleyin.

9e81e5a79d421eac.png

10. Gemini Code Assist'i etkinleştirme

Sağ alt köşedeki "Gemini" simgesini 7c891e32c055c0e4.png tıklayın.

"Login to Google Cloud" ve "Select a Google Cloud Project"yi tıklayın.

f5318f22c91ecaa8.png

6b7203ffdd8485fa.png

fb8d42a6bc8a260f.png

Pop-up pencerede Qwiklabs projenizi seçin.

f661047956a6d6f9.png

11. Gemini Code Assist ile kodu açıklama

devai-review.yml dosyasında herhangi bir yeri sağ tıklayın ve Gemini Code Assist > Explain bu seçeneği belirleyin.

41fb7da002bdf43.png

İnceleme açıklaması:

7724d52e54918c00.png

12. DEVAI CLI'yi yerel olarak çalıştırma

Cloud Shell terminaline dönün ve devai'ü yerel olarak yüklemek için aşağıdaki komutları çalıştırın.

pip3 install devai-cli

Komut satırı yüklenmiş ancak PATH'te değil.

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 ortam değişkenini güncellemek için aşağıdaki komutu çalıştırın. Kullanıcınızın ana klasör adıyla değiştirin. Örneğin: student_00_478dfeb8df15

export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin

Kod incelemesini yerel olarak yapmak için devai cli komutunu çalıştırın. Komut satırı çıkışını inceleyin.

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1

cd ~/genai-for-developers

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

Aşağıdaki komutu çalıştırarak inceleme komut dosyasını açın:

cloudshell edit devai-cli/src/devai/commands/review.py

review.py dosyasında herhangi bir yeri sağ tıklayın ve Gemini Code Assist > Explain bu seçeneği belirleyin.

Açıklamayı inceleyin.

30e3baf4c272c8ab.png

13. DevAI CLI Geliştirme

Bu bölümde devai cli'de değişiklik yapacaksınız.

Başlamak için python virtualenv'yi kurun, gereksinimleri yükleyin ve örnek komutu çalıştırın.

cd ~/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo

Her şeyin düzgün çalıştığından emin olmak için kod inceleme komutunu yeniden çalıştırın:

devai review code -c ~/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Cloud Shell Düzenleyici'de Markdown önizlemesini kullanarak sonuçları inceleyin.

Yeni bir dosya oluşturun ve Gemini'nin yanıtını yapıştırın.

Ardından Komut Paleti'ni kullanın ve "Markdown: Open Preview"yi seçin.

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

14. devai cli komutlarını keşfetme

Kod incelemesi komutu

devai review code -c ~/genai-for-developers/sample-app/src/main/java

Performans incelemesi komutu

devai review performance -c ~/genai-for-developers/sample-app/src/main/java

Güvenlik incelemesi komutu

devai review security -c ~/genai-for-developers/sample-app/src/main/java

Test kapsamı inceleme komutu

devai review testcoverage -c ~/genai-for-developers/sample-app/src

Engelleyicilerin inceleme komutları

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

Görüntü/şema inceleme ve özetleme:

Giriş şeması[~/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

İnceleme komutu:

devai review image \
  -f ~/genai-for-developers/images/extension-diagram.png \
  -p "Review and summarize this diagram"

Çıkış:

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.

Resim farkı analizi:

devai review imgdiff \
  -c ~/genai-for-developers/images/devai-api.png \
  -t ~/genai-for-developers/images/devai-api-slack.png  

Çıkış:

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.

Belge oluşturma komutu:

devai document readme -c ~/genai-for-developers/sample-app/src/main/

Çıkış:

# 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
...

Cloud Shell Düzenleyici'de kullanılabilen devai cli komutlarını inceleyin:

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

Alternatif olarak GitHub deposundaki README.md dosyasını inceleyebilirsiniz.

15. Tebrikler!

Tebrikler, kod laboratuvarını tamamladınız.

Ele aldığımız konular:

  • GitHub'da GenAI kod inceleme otomasyon adımları ekleme
  • devai komut satırı aracını yerel olarak çalıştırma

Sıradaki adım:

  • Daha fazla uygulamalı oturum yakında kullanıma sunulacak.

Temizleme

Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi saklayıp kaynakları tek tek silin.

Projeyi silme

Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.

©2024 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.