1. 📖 Pengantar

Dalam codelab ini, Anda akan mempelajari dasar-dasar Gemini CLI dan menggunakan ekstensi analisis keamanan dan peninjauan kode dalam alur kerja pengembangan software Anda.
Yang akan Anda pelajari
- Cara menyiapkan Gemini CLI
- Cara mengonfigurasi Gemini CLI
- Cara menginstal ekstensi Gemini CLI
- Cara memanfaatkan ekstensi Gemini CLI untuk peninjauan kode dan analisis keamanan
- Cara mengonfigurasi MCP untuk Gemini CLI
- Cara memeriksa Gemini CLI di CI/CD
Yang Anda butuhkan
- Browser web Chrome
- Akun Gmail
- Project Cloud dengan akun penagihan diaktifkan
2. 🚀 Menyiapkan Penyiapan Pengembangan Workshop
Langkah 1: Pilih Project Aktif di Konsol Cloud
Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud (lihat bagian kiri atas konsol Anda)

Klik, dan Anda akan melihat daftar semua project Anda seperti contoh ini,

Nilai yang ditunjukkan oleh kotak merah adalah PROJECT ID dan nilai ini akan digunakan di seluruh tutorial.
Pastikan penagihan diaktifkan untuk project Cloud Anda. Untuk memeriksanya, klik ikon burger ☰ di panel kiri atas yang menampilkan Menu Navigasi, lalu temukan menu Penagihan


Jika Anda melihat "Akun Penagihan Uji Coba Google Cloud Platform" di bagian judul Penagihan / Ringkasan ( bagian kiri atas konsol cloud Anda ), project Anda siap digunakan untuk tutorial ini. Jika tidak, kembali ke awal tutorial ini dan tukarkan akun penagihan uji coba

Langkah 2: Pelajari Cloud Shell
Anda akan menggunakan Cloud Shell untuk sebagian besar tutorial. Klik Activate Cloud Shell di bagian atas konsol Google Cloud. Jika Anda diminta untuk memberikan otorisasi, klik Authorize.


Setelah terhubung ke Cloud Shell, kita perlu memeriksa apakah shell ( atau terminal) sudah diautentikasi dengan akun kita
gcloud auth list
Jika Anda melihat Gmail pribadi Anda seperti contoh output di bawah, semuanya baik-baik saja
Credentialed Accounts
ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Jika tidak, coba muat ulang browser Anda dan pastikan Anda mengklik Izinkan saat diminta ( mungkin terganggu karena masalah koneksi)
Selanjutnya, kita juga perlu memeriksa apakah shell sudah dikonfigurasi ke PROJECT ID yang benar yang Anda miliki. Jika Anda melihat ada nilai di dalam ( ) sebelum ikon $ di terminal ( pada screenshot di bawah, nilainya adalah "your-workshop-project"), nilai ini menunjukkan project yang dikonfigurasi untuk sesi shell aktif Anda.

Jika nilai yang ditampilkan sudah benar, Anda dapat melewati perintah berikutnya. Namun, jika tidak benar atau tidak ada, jalankan perintah berikut
gcloud config set project <YOUR_PROJECT_ID>
Langkah 3: Pahami Editor Cloud Shell dan Siapkan Direktori Kerja Aplikasi
Sekarang, kita dapat menyiapkan editor kode untuk melakukan beberapa hal terkait coding. Kita akan menggunakan Cloud Shell Editor untuk melakukannya
Klik tombol Open Editor, dan Cloud Shell Editor akan terbuka 
Sekarang Anda akan melihat antarmuka Cloud Shell Editor seperti yang ditunjukkan di bawah

Sekarang, buat clone repositori demo yang akan kita gunakan. Pertama, kita perlu membuka terminal untuk editor. Anda dapat melakukannya dengan mengklik Terminal -> New Terminal di panel menu, atau menggunakan Ctrl + Shift + C , yang akan membuka jendela terminal di bagian bawah browser

Kemudian, jalankan perintah ini di terminal
git clone https://github.com/alphinside/gemini-cli-code-analysis-demo.git code-analysis-demo
Setelah itu, buka bagian atas Editor Cloud Shell, klik File->Open Folder, temukan direktori username Anda, lalu temukan direktori repositori yang di-clone code-analysis-demo, lalu klik tombol OK. Tindakan ini akan menjadikan direktori yang dipilih sebagai direktori kerja utama. Dalam contoh ini, nama penggunanya adalah alvinprayuda, sehingga jalur direktori ditampilkan di bawah


Sekarang, direktori kerja Cloud Shell Editor Anda akan terlihat seperti ini

Sekarang kita dapat melanjutkan ke tahap berikutnya
3. 🚀 Penyiapan dan Konfigurasi
Jika ingin menginstal Gemini CLI di sistem lokal, Anda dapat mengikuti langkah-langkah berikut:
- Pastikan sistem Anda memiliki Node versi 20+
- Aktifkan Gemini CLI dengan:
- Menginstalnya sebagai paket global
# Install as an executor
npm install -g @google/gemini-cli
# then run it from terminal
gemini
- Atau jalankan langsung dari sumber untuk selalu mendapatkan versi terbaru
npx https://github.com/google-gemini/gemini-cli
Saat Anda menjalankannya untuk pertama kali, aplikasi akan mengajukan beberapa pertanyaan. Jika Anda menjalankannya dari IDE (misalnya, VSCode), Anda akan ditanya pertanyaan berikut

Kemudian, Anda akan ditanya beberapa opsi untuk melakukan autentikasi

Ada beberapa opsi:
- Jika Anda memilih Login dengan Google, halaman Google Authentication akan terbuka di browser, dan Anda hanya perlu menyetujuinya
- Jika Anda lebih suka menggunakan Kunci API Gemini, Anda harus membuatnya di halaman AI Studio, lalu membuat file .env di direktori kerja dengan setelan variabel GEMINI_API_KEY ( atau jalankan perintah
export GEMINI_API_KEY="your-api-key"di command line) - Jika memilih untuk menggunakan Vertex AI, Anda memerlukan project seperti yang telah disiapkan sebelumnya, membuat file .env, serta menetapkan GOOGLE_CLOUD_PROJECT dan GOOGLE_CLOUD_LOCATION
Jika ingin mengubah metode autentikasi ini, Anda dapat menjalankan perintah /auth dari Gemini CLI atau mengedit file konfigurasi. Jika Anda ingin mengedit file konfigurasi secara langsung, di Linux, file tersebut harus berada di $HOME/.gemini/settings.json . Anda akan melihat jenis security dan auth, lalu mengeditnya
{
"security": {
"auth": {
"selectedType": "vertex-ai" # or "gemini-api-key" or "oauth-personal"
}
}
}

4. 🚀 Perintah Dasar dan Alat Bawaan
Sekarang, mari kita coba Gemini CLI untuk mengetahui lebih lanjut tentangnya. Jika Anda mencari beberapa perintah dasar yang dapat digunakan, Anda dapat mengetik /help untuk menampilkan semua perintah yang tersedia

/help
Anda akan melihat output seperti ini 
Gemini CLI adalah Agen AI, sehingga akan memiliki alat yang dilengkapi untuk menyelesaikan tugas yang diberikan oleh pengguna. Untuk melihat alat bawaan yang dimilikinya, jalankan perintah /tools

/tools
Anda akan melihat output seperti ini

Anda dapat melihat bahwa Gemini CLI memiliki beberapa kemampuan seperti membaca dan menulis ke file, penelusuran web, dan banyak lagi. Beberapa alat ini memerlukan konfirmasi pengguna secara default karena potensi risikonya
Sekarang mari kita lihat penerapannya, coba jalankan perintah ini di Gemini CLI

Find top 10 OWASP security issue and write it down to owasp.md
Anda akan melihat bahwa perintah tersebut akan memanggil alat GoogleSearch dan selanjutnya akan menulis hasilnya menggunakan alat WriteFile. Jika menggunakan IDE, Anda akan melihat bahwa saran akan ditampilkan sebagai opsi perbedaan dan tampilan, baik Anda ingin menerima atau menolak saran tersebut. Di sini, Anda dapat melihat bahwa Gemini CLI meminta izin Anda untuk menulis file

5. 🚀 Ekstensi
Untuk meningkatkan output tugas tertentu dengan Agen AI, tantangannya adalah bagaimana kita dapat membuat perintah yang tepat, mengelola rekayasa konteks yang tepat dengan integrasi alat yang tepat, dan sebagainya.
Ekstensi Gemini CLI adalah perintah dan integrasi yang telah dipaketkan dan mudah diinstal yang dapat terhubung ke alat eksternal. Setiap ekstensi berisi "playbook" bawaan tentang cara menggunakan alat secara efektif dan dapat terdiri dari komponen berikut:
- Perintah garis miring kustom
- Konfigurasi MCP
- File konteks

Menginstal Ekstensi Keamanan
Misalnya, dalam tutorial ini, kita akan mempelajari cara menginstal ekstensi code-review dan security
Jalankan perintah berikut untuk menginstal ekstensi security dari terminal
gemini extensions install https://github.com/gemini-cli-extensions/security
Pertanyaan berikut akan ditampilkan, cukup tekan enter untuk menyetujui
Installing extension "gemini-cli-security". **Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.** This extension will run the following MCP servers: * securityServer (local): node /home/alvinprayuda/.gemini/extensions/gemini-cli-security/mcp-server/dist/security.js This extension will append info to your gemini.md context using GEMINI.md Do you want to continue? [Y/n]: Extension "gemini-cli-security" installed successfully and enabled.
Menginstal Ekstensi Peninjauan Kode
Selanjutnya, mari kita instal ekstensi code-review, jalankan perintah di bawah
gemini extensions install https://github.com/gemini-cli-extensions/code-review
Setelah selesai, jalankan Gemini CLI lagi
gemini
dan menjalankan perintah /extensions, Anda akan melihat bahwa 2 ekstensi ini sudah diinstal

/extensions
Oke, sekarang mari kita lakukan eksekusi praktis pada repo contoh yang Anda clone sebelumnya
6. 🚀 Mode Interaktif - Aplikasi Ekstensi Analisis Keamanan Kode
Ekstensi Security adalah ekstensi Gemini CLI open source, yang dibuat untuk meningkatkan keamanan repositori. Ekstensi ini menambahkan perintah baru ke Gemini CLI yang menganalisis perubahan kode untuk mengidentifikasi berbagai risiko dan kerentanan keamanan.
Sekarang, mari kita siapkan repositori demo terlebih dahulu, jalankan perintah berikut untuk beralih ke cabang tempat perubahan dengan risiko keamanan sudah diterapkan
git checkout refactor/analysis-demo
Setelah itu, jalankan Gemini CLI di terminal
gemini
Kemudian, jalankan ekstensi

/security:analyze
Tindakan ini akan memulai proses yang berjalan lama dan selama proses tersebut, Anda akan menerima beberapa gangguan yang meminta izin Anda untuk menjalankan operasi tertentu seperti mkdir seperti yang ditunjukkan di bawah

Ini adalah mekanisme perlindungan untuk memastikan bahwa pengguna mengetahui apa yang akan dieksekusi oleh Gemini CLI. Untuk tutorial selanjutnya, Anda dapat selalu mengizinkannya ( opsi 2).
Ekstensi ini akan memanggil proses yang berjalan lama, Anda dapat melihatnya membuat file perencanaan di dalam direktori .gemini_security dan Anda dapat melihat checklist proses yang sudah selesai atau belum. Seperti yang ditunjukkan dalam contoh di bawah ini:

Tugasnya akan memerlukan waktu beberapa saat untuk selesai. Sementara menunggu, kita dapat memeriksa sumber ekstensi ini di repositori GitHub. URL ini menampilkan perintah yang digunakan untuk menjalankan semua proses pemindaian keamanan ini

Seperti yang dapat Anda lihat di sana, untuk melakukan pemindaian ini, perintah sebagai Gemini CLI untuk melakukan pemeriksaan dua tahap, yaitu Reconnaissance Pass dan Investigation Pass yang lebih mendetail.
Jika Anda melihat perintah berikut di Gemini CLI, Anda dapat memilih opsi 2 untuk menonaktifkan deteksi loop

Kemudian, minta Gemini CLI untuk melanjutkan

continue
Ini adalah mekanisme untuk menghindari loop pemanggilan alat yang tidak produktif tanpa batas dan akan terus ditingkatkan seiring waktu.
Setelah selesai, laporan akan ditampilkan di terminal interaktif. Untuk mempermudah, mari kita instruksikan Gemini CLI untuk menuliskannya ke security-analysis.md

write the result to security-analysis.md file
Sekarang Anda dapat memeriksa hasil yang ditulis ke file
7. 🚀 Mode Non-Interaktif - Aplikasi Ekstensi Peninjauan Kode
Ekstensi code-review menambahkan perintah baru ke Gemini CLI yang menganalisis perubahan kode untuk mengidentifikasi berbagai masalah kualitas kode.
Ekstensi ini dapat dieksekusi dalam mode non-interaktif Gemini CLI, yang berarti semua proses dapat dieksekusi tanpa perlu memasukkan shell Gemini CLI. Untuk menjalankan Gemini CLI dalam mode non-interaktif, Anda dapat melakukannya dengan pola perintah berikut
gemini "put your command here"
Namun, perlu diperhatikan bahwa, saat berjalan dalam mode non-interaktif, semua operasi alat yang memerlukan izin pengguna akan dinonaktifkan. Oleh karena itu, kita perlu menambahkan tanda --yolo untuk menyetujui semua tindakan secara otomatis, yang berarti mengaktifkan semua alat selama mode non-interaktif
Mari jalankan ekstensi code-review dengan perintah berikut
gemini "/code-review" --yolo -e code-review > code-review.md
Perintah ini akan menulis hasil output Gemini CLI ke dalam file code-review.md. Perhatikan tanda -e di sini, tanda ini mengontrol ekstensi mana yang akan diaktifkan selama sesi. Di sini, kita hanya mengaktifkan ekstensi code-review dan menonaktifkan ekstensi lainnya.
Proses ini akan memakan waktu beberapa saat, tetapi setelah selesai, Anda dapat melihat hasil yang serupa seperti yang ditunjukkan di bawah ini yang ditulis ke file markdown
Here are the results of the code review.
While the recent changes to rename `get_products` and `get_product` to `GetProducts` and `GetProduct` are minor, the codebase has some inconsistencies in its naming conventions. For instance, other functions like `create_product` use `snake_case`, while the newly renamed functions use `PascalCase`. For better code quality and readability, I recommend using a consistent naming convention throughout the project.
More importantly, I have identified several security vulnerabilities in the `main.py` file. Here is a summary of the findings:
### 1. SQL Injection
* **Severity**: High
* **Location**:
* `main.py:99` in `get_products_by_category`
* `main.py:146` in `search_products`
* `main.py:372` in `get_user_transactions`
* `main.py:438` in `adjust_inventory_by_query`
* **Description**: The endpoints directly use f-strings to construct SQL queries, making them vulnerable to SQL injection attacks. An attacker could manipulate the input to execute arbitrary SQL commands, potentially leading to data breaches or unauthorized modifications.
* **Recommendation**: Use parameterized queries or an ORM to handle database interactions. This will ensure that user input is properly sanitized and prevent SQL injection attacks.
### 2. Server-Side Request Forgery (SSRF)
* **Severity**: High
* **Location**: `main.py:265` in `fetch_url`
* **Description**: The `fetch_url` endpoint allows users to specify an arbitrary URL, which the server then requests. This can be exploited to make requests to internal services or local files, leading to information disclosure or other security breaches.
* **Recommendation**: Implement a whitelist of allowed domains or protocols to restrict the URLs that can be requested. Additionally, you can disable redirects and use a timeout to limit the impact of an attack.
### 3. Information Exposure
* **Severity**: Medium
* **Location**: `main.py:423` in `get_environment_variables`
* **Description**: The `get_environment_variables` endpoint exposes all environment variables to the user. This can include sensitive information such as API keys, database credentials, and other secrets.
* **Recommendation**: Remove this endpoint or restrict access to it to authorized users. If you need to expose some environment variables, do so selectively and avoid exposing sensitive information.
8. 🚀 Dukungan Model Context Protocol
Sekarang, seperti yang telah kita periksa sebelumnya dalam penjelasan ekstensi, Gemini CLI dapat terhubung ke server MCP—aplikasi yang menyediakan alat dan resource melalui Model Context Protocol. Koneksi ini memungkinkan Gemini CLI berinteraksi dengan sistem eksternal dan sumber data menggunakan server MCP sebagai jembatan ke lingkungan lokal dan layanan eksternal seperti API.

Jika ingin melakukan penyiapan server MCP sendiri, Anda perlu mengubah file .gemini/settings.json dan menambahkan konfigurasi berikut :
{
...
# Previous settings above if any
"mcpServers": {
"server_name": {
# MCP server configurations here
}
}
}
Untuk tutorial ini, mari kita konfigurasi koneksi dengan akun GitHub untuk mengirimkan data laporan sebelumnya ke GitHub
Mengonfigurasi Server MCP GitHub
Pertama, mari buat file konfigurasi project Gemini CLI terlebih dahulu. Jalankan perintah berikut
mkdir -p .gemini && touch .gemini/settings.json
Kemudian, buka file .gemini/settings.json dan isi dengan konfigurasi berikut
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "your-personal-access-token"
},
"timeout": 5000
}
}
}
Sekarang, kita akan memerlukan token akses pribadi Github Anda di sini, jadi pastikan Anda sudah memiliki akun Github sendiri.
Login ke GitHub Anda, lalu buka Settings

Setelah itu, scroll ke bawah untuk menemukan Setelan developer dan klik

Kemudian, pilih Personal access tokens dan pilih Tokens (classic)


Beri nama token akses pribadi Anda di sini dan periksa cakupan repo

Kemudian, scroll ke bawah dan klik tombol Buat Token, pastikan Anda
Klik tombol Buat token baru, lalu pilih Buat token baru (klasik). Setelah itu, salin token yang dihasilkan dan tulis di .gemini/settings.json

Jadi, .gemini/settings.json Anda akan terlihat seperti contoh berikut
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "ghp-xxxx"
},
"timeout": 5000
}
}
}
Sekarang, mari kita verifikasi koneksinya. Masukkan Gemini CLI dengan menjalankan perintah ini
gemini
Kemudian, jalankan perintah /mcp, Anda akan melihat MCP Github sudah dikonfigurasi dengan benar

/mcp
Kemudian, mari kita uji koneksi MCP ini dengan mengirimkan perintah ini

Aggregate the findings from @code-review.md and @security-analysis.md into a single report and ensure no duplicates issues reported. Post this report as a comment on the relevant pull request for the current git branch on GitHub and display the pull request URL for manual review
Perhatikan notasi @code-review.md dan @security-analysis.md di sini, ini adalah cara kita mereferensikan file yang akan diteruskan ke Gemini CLI. Perintah ini akan membaca konten kedua file dan mengirimkan komentar ke Pull Request yang terkait dengan cabang ini menggunakan koneksi Github MCP. Setelah itu, Anda dapat memeriksa URL pull request untuk memverifikasinya.

9. 💡Gemini CLI dalam Alur Kerja CI/CD
Jika Anda adalah pengguna GitHub, Anda dapat menyematkan Gemini CLI dengan mudah di pipeline CI/CD dengan memanfaatkan run-gemini-cliGitHub Action. Gemini CLI bertindak sebagai agen otonom untuk tugas coding rutin yang penting, dan kolaborator on-demand yang dapat Anda delegasikan pekerjaannya dengan cepat.
Anda dapat memanfaatkannya untuk melakukan peninjauan permintaan pull, menyeleksi masalah, melakukan analisis dan modifikasi kode, serta banyak lagi menggunakan Gemini secara percakapan langsung di dalam repositori GitHub
Contoh integrasi ini dapat diperiksa dalam permintaan penarikan ini, tempat kami menggunakan ekstensi Keamanan Gemini CLI di dalam runner dan memberikan ulasan saat Permintaan Penarikan dibuat




10. 💡Menjelajahi Ekstensi Gemini CLI Lainnya

Anda juga dapat menjelajahi ekstensi lainnya di https://geminicli.com/extensions . Coba lihat untuk menemukan alat yang lebih menarik.
11. 🧹 Membersihkan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.