Bitbucket - Otomatisasi Peninjauan Kode dengan AI Generatif

Bitbucket - Otomatisasi Peninjauan Kode dengan AI Generatif

Tentang codelab ini

subjectTerakhir diperbarui Mar 24, 2025
account_circleDitulis oleh Andrey Shakirov

1. Ringkasan

Di lab ini, Anda akan menyiapkan pipeline Bitbucket dan mengintegrasikannya dengan Gemini untuk mengotomatiskan langkah-langkah peninjauan kode.

92eff32c1969388f.png

Di lab ini, Anda akan mempelajari cara melakukan hal-hal berikut:

  • Cara menambahkan langkah otomatisasi peninjauan kode GenAI di Bitbucket
  • Cara menjalankan CLI devai secara lokal untuk mengotomatiskan peninjauan kode
  • Di lab ini, Anda dianggap telah memahami Konsol Cloud dan lingkungan Cloud Shell.

2. Penyiapan dan Persyaratan

Penyiapan Project Cloud

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Penyiapan Lingkungan

Buka chat Gemini.

bc3c899ac8bcf488.png

Atau ketik "Minta Gemini" di kotak penelusuran.

e1e9ad314691368a.png

Aktifkan Gemini for Google Cloud API:

990a0ceea7d05531.png

Klik "Start chatting" dan ikuti salah satu contoh pertanyaan atau ketik perintah Anda sendiri untuk mencobanya.

ed120d672468b412.png

Perintah yang dapat dicoba:

  • Jelaskan Cloud Run dalam 5 poin utama.
  • Anda adalah Product Manager Google Cloud Run, jelaskan Cloud Run kepada seorang siswa dalam 5 poin penting singkat.
  • Anda adalah Product Manager Google Cloud Run, jelaskan Cloud Run kepada Developer Kubernetes Bersertifikat dalam 5 poin penting singkat.
  • Anda adalah Product Manager Google Cloud Run, jelaskan kapan Anda akan menggunakan Cloud Run versus GKE kepada Developer Senior dalam 5 poin penting singkat.

Lihat Panduan Perintah untuk mempelajari lebih lanjut cara menulis perintah yang lebih baik.

Cara Gemini untuk Google Cloud menggunakan data Anda

Komitmen privasi Google

Google adalah salah satu yang pertama di industri yang memublikasikan komitmen privasi AI/ML, yang menguraikan keyakinan kami bahwa pelanggan harus memiliki tingkat keamanan dan kontrol tertinggi atas data mereka yang disimpan di cloud.

Data yang Anda kirimkan dan terima

Pertanyaan yang Anda ajukan kepada Gemini, termasuk informasi input atau kode yang Anda kirimkan ke Gemini untuk dianalisis atau diselesaikan, disebut perintah. Jawaban atau penyelesaian kode yang Anda terima dari Gemini disebut respons. Gemini tidak menggunakan perintah Anda atau responsnya sebagai data untuk melatih modelnya.

Enkripsi perintah

Saat Anda mengirimkan perintah ke Gemini, data Anda dienkripsi selama pengiriman sebagai input ke model pokok di Gemini.

Data program yang dihasilkan dari Gemini

Gemini dilatih dengan kode Google Cloud pihak pertama serta kode pihak ketiga yang dipilih. Anda bertanggung jawab atas keamanan, pengujian, dan efektivitas kode Anda, termasuk penyelesaian, pembuatan, atau analisis kode yang ditawarkan Gemini kepada Anda.

Pelajari lebih lanjut cara Google menangani perintah Anda.

3. Opsi untuk menguji perintah

Jika ingin mengubah/memperluas perintah devai cli yang ada, Anda memiliki beberapa opsi untuk melakukannya.

Vertex AI Studio adalah bagian dari platform Vertex AI Google Cloud, yang dirancang khusus untuk menyederhanakan dan mempercepat pengembangan serta penggunaan model AI generatif.

Google AI Studio adalah alat berbasis web untuk membuat prototipe dan bereksperimen dengan rekayasa perintah dan Gemini API.

Aplikasi web Google Gemini (gemini.google.com) adalah alat berbasis web yang dirancang untuk membantu Anda menjelajahi dan memanfaatkan kecanggihan model AI Gemini Google.

4. Buat Akun Layanan

Aktifkan Cloud Shell dengan mengklik ikon di sebelah kanan kotak penelusuran.

3e0c761ca41f315e.png

Di terminal yang terbuka, aktifkan layanan yang diperlukan untuk menggunakan Vertex AI API dan chat Gemini.

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

Jika diminta untuk memberikan otorisasi, klik "Authorize" untuk melanjutkan.

6356559df3eccdda.png

Jalankan perintah berikut untuk membuat akun layanan dan kunci baru.

Anda akan menggunakan akun layanan ini untuk melakukan panggilan API ke Vertex AI Gemini API dari pipeline 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"

Berikan peran.

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. Mengimpor GitHub Repo ke Bitbucket Repo

Login ke https://bitbucket.org/, lalu pilih opsi "Create" / Repository / Import repository".

bf74d0d8c903fd71.png

URL repositori Git:

https://github.com/GoogleCloudPlatform/genai-for-developers.git

Pilih ruang kerja dan project Anda, lalu berikan nama untuk repositori baru.

891c8ac58cc71419.png

Klik - "Import repository" untuk memulai proses impor.

6. Menambahkan variabel pipeline Bitbucket

Selanjutnya, Anda akan mengaktifkan pipeline CICD Bitbucket untuk menjalankan peninjauan kode saat perubahan di-push ke repositori.

Buka repositori Bitbucket di browser dan buka bagian "Repository settings / PIPELINES / Settings"". Aktifkan pipeline untuk repositori ini.

8b431c2a83222546.png

Buka bagian "Repository settings / PIPELINES / Repository variables".

Tambahkan 3 variabel:

  • PROJECT_ID - project ID qwiklabs Anda
  • LOCATION - us-central1
  • GOOGLE_CLOUD_CREDENTIALS

Untuk nilai variabel GOOGLE_CLOUD_CREDENTIALS, gunakan kunci akun layanan yang dibuat di bagian di atas. Jalankan perintah ini di Google Cloud Shell dan salin/tempel nilainya.

cat ~/vertex-client-key.json

Tampilan variabel repositori:

fe2b8e768c09dc5b.png

7. Menjalankan pipeline Bitbucket

Buka bagian "Pipelines", lalu klik "Run initial pipeline".

f97424bbfc790da8.png

Pilih cabang "main" dan pipeline "default", lalu klik "Run".

8e7604e2f513360e.png

8. Meninjau output pipeline Bitbucket

Buka/muat ulang bagian "Pipelines" dan tinjau output pipeline.

abf4fbdec6781ffd.png

335acbee3cba263f.png

Hasil perintah cakupan pengujian:

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

Perintah devai review testcoverage ini menganalisis kode dan rangkaian pengujian terkait, jika tersedia, menggunakan model AI generatif, Gemini. Alat ini menilai cakupan pengujian kode yang disediakan, mengidentifikasi file dan metode dengan dan tanpa pengujian unit. Perintah ini kemudian memanfaatkan model untuk memberikan ringkasan cakupan, termasuk metrik seperti baris dan cabang/kondisi yang tercakup. Berdasarkan analisisnya, alat ini membuat rekomendasi untuk meningkatkan cakupan pengujian, menyarankan pengujian tertentu untuk ditambahkan, dan menawarkan saran umum tentang praktik terbaik pengujian. Terakhir, model ini menghasilkan respons model Gemini yang mencakup detail seperti file yang tidak memiliki cakupan, dan saran untuk meningkatkan pengujian yang ada kepada pengguna melalui command line.

Hasil perintah peninjauan kode:

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

Perintah devai review code melakukan peninjauan kode yang komprehensif terhadap cuplikan kode yang diberikan menggunakan model AI Generatif. Kode ini memerlukan kode yang akan ditinjau sebagai input (konteks) dan preferensi format output (output). Alat ini memanfaatkan model bahasa besar untuk menganalisis kode terkait ketepatan, efisiensi, kemampuan pemeliharaan, keamanan, dan kepatuhan terhadap praktik terbaik. Perintah ini membuat perintah mendetail yang menginstruksikan Gemini tentang cara melakukan peninjauan, lalu mengirimkannya ke model untuk mengevaluasi kode yang diberikan. Terakhir, fungsi ini memproses respons Gemini, memformatnya dalam markdown, JSON, atau tabel sesuai dengan preferensi pengguna, dan menampilkan hasil ulasan.

Hasil perintah peninjauan kepatuhan:

devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md

Perintah devai review compliance menganalisis kode berdasarkan serangkaian praktik terbaik, biasanya untuk konfigurasi Kubernetes. Perintah ini menggunakan model Gemini untuk meninjau kode yang diberikan (context) dan membandingkannya dengan standar yang ditentukan dalam file konfigurasi terpisah (config). Perintah ini memanfaatkan perintah untuk menginstruksikan model Gemini agar bertindak sebagai engineer Kubernetes ahli dan memberikan laporan kepatuhan. Kemudian, alat ini memformat temuan sebagai penjelasan singkat, yang berfokus pada contoh kode yang menunjukkan cara mengatasi masalah yang teridentifikasi. Terakhir, perintah akan mencetak output peninjauan kepatuhan Gemini ke konsol. Hal ini memungkinkan pengguna mengaudit kode mereka dengan mudah untuk memastikan kepatuhan.

9. Meng-clone Repo Bitbucket dan Menyiapkan kunci SSH

Kembali ke terminal Google Cloud Shell dan siapkan kunci SSH baru.

Perbarui email Anda sebelum menjalankan perintah.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh
-add ~/.ssh/id_ed25519

cat
~/.ssh/id_ed25519.pub

Tambahkan kunci akses ke repositori Bitbucket Anda.

Buka "Repository settings / SECURITY / Access keys", lalu klik "Tambahkan kunci".

Untuk nilai kunci, salin/tempel output perintah terakhir.

bac102fd433bb388.png

Di bagian "Source", klik "Clone" dan salin URL.

571f4f775bcbd1f7.png

46c163d7e5356c67.png

Kembali ke terminal dan clone repositori.

cd ~
mkdir bitbucket
cd bitbucket

Ganti dengan project Bitbucket dan URL repositori Anda.

git clone git@bitbucket.org:YOUR_PROJECT/genai-for-developers.git

Ubah direktori dan buka file bitbucket-pipelines.yml. Jika Anda mengubah nama repositori selama impor, perbarui nama folder sebelum menjalankan perintah berikut.

cd genai-for-developers

cloudshell edit bitbucket
-pipelines.yml

10. Menjelaskan kode dengan Gemini Code Assist

Klik kanan di mana saja dalam file bitbucket-pipelines.yml dan pilih Gemini Code Assist > Explain ini.

29ef71c136d173a2.png

Penjelasan peninjauan:

a183a2df0b6cc668.png

11. Pengembangan CLI DevAI

Di bagian ini, Anda akan melakukan perubahan pada devai cli.

Untuk memulai, siapkan virtualenv python, instal persyaratan, dan jalankan perintah contoh.

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

Tetapkan variabel lingkungan yang diperlukan.

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

Jalankan perintah peninjauan kode untuk memeriksa apakah semuanya berfungsi dengan baik:

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

Tinjau hasil menggunakan pratinjau Markdown di Cloud Shell Editor.

Kemudian, gunakan Palet Perintah dan pilih "Markdown: Open Preview".

9587123b62f12a55.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

Perintah peninjauan cakupan pengujian

devai review testcoverage -c ~/bitbucket/genai-for-developers/sample-app/src > testcoverage.md

cloudshell edit testcoverage
.md

Perintah peninjauan kepatuhan

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

Perintah peninjauan performa

devai review performance -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > performance-review.md

cloudshell edit performance
-review.md

Perintah peninjauan keamanan

devai review security -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > security-review.md

cloudshell edit security
-review.md

Perintah peninjauan pemblokir

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

Peninjauan dan ringkasan Gambar/Diagram

Diagram input[~/bitbucket/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

Perintah peninjauan:

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

Output:

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.

Analisis perbedaan gambar

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

Output:

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.

Analisis file video:

devai review video \
 
-f "/tmp/video.mp4" \
 
-p "Review user journey video and create unit tests using jest framework"

Perintah pembuatan dokumentasi

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

Output:

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

Tinjau perintah devai cli yang tersedia di Cloud Shell Editor:

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

Atau tinjau README.md di repositori GitHub.

12. Selamat!

Selamat, Anda telah menyelesaikan codelab!

Yang telah kita bahas:

  • Menambahkan langkah otomatisasi peninjauan kode GenAI di Bitbucket
  • Menjalankan cli devai secara lokal

Langkah berikutnya:

  • Sesi langsung lainnya akan segera hadir.

Pembersihan

Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

©2024 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.