1. Pengantar

Halo semuanya, Namaku Sparky! Kami senang Anda bisa bergabung. Saya sudah terbang dari cluster GKE di us-central1 untuk berada di sini hari ini. Selamat datang di codelab ini.
Saya telah menghabiskan seluruh hidup saya menjelajahi aliran data Google Cloud, dan saya telah melihat semuanya. Saya telah melihat Anda, para arsitek dan insinyur, membangun hal-hal luar biasa. Tapi aku juga pernah melihatmu terjebak di semak duri. Anda tahu apa yang saya bicarakan! Perasaan berpindah konteks saat Anda men-debug pod di GKE. Anda berpindah-pindah antara kubectl logs, konsol GCP untuk memeriksa kondisi node, IDE untuk melihat kode sumber yang di-deploy, dan tab browser dengan dokumen Kubernetes resmi untuk hook siklus proses pod. Setiap lompatan adalah gangguan fokus.
Dan alat yang kompleks. gcloud, kubectl, terraform... masing-masing dengan DSL-nya sendiri dan banyak sekali tanda. Hal ini menyebabkan pencarian dokumentasi yang terus-menerus. Anda akhirnya menelusuri perintah gcloud yang paling tepat dengan kombinasi flag --filter dan --format yang benar untuk mendapatkan data yang Anda butuhkan. Ini seperti mencoba menemukan kacang tertentu di hutan yang berisi jutaan kacang. Dan jangan sampai saya mulai membahas tugas berulang. Saya telah melihat Anda menulis Dockerfile dan cloudbuild.yaml yang sama untuk layanan Python baru berkali-kali sehingga kode tersebut mungkin mengalami deja vu.
Nah, kami hadir untuk menunjukkan cara yang lebih baik. Jalan rahasia di tengah hutan. Itulah fungsi Gemini CLI.
Apa itu Gemini CLI?
Jadi, apa jalan pintas ajaib yang membuat saya sangat bersemangat ini?
Anggap Gemini CLI sebagai pendamping cloud pribadi Anda, langsung di dalam terminal Anda. Ini adalah percakapan, kemitraan! Gemini sadar konteks, yang merupakan cara canggih untuk mengatakan bahwa Gemini tidak hanya mendengarkan, tetapi juga memahami. Fitur ini dapat membaca file Anda, mempelajari konvensi project Anda—seperti apakah Anda menggunakan tab atau spasi—dan mengetahui apa yang sedang Anda coba lakukan. Seolah-olah saya bisa mencium aroma biji pohon ek yang sedang Anda coba kumpulkan!
Arsitektur Tingkat Tinggi (Mari kita lihat prosesnya!)
Jadi, bagaimana cara kerjanya? Ini adalah perpaduan beberapa hal keren yang bekerja secara harmonis:
- Model Bahasa yang Canggih: Ini adalah otak! Secara khusus, Gemini adalah model multimodal besar yang dilatih oleh Google. 'Multimodal' berarti model ini tidak hanya memahami teks, tetapi juga memahami struktur dan makna kode. Dengan begitu, Gemini dapat memahami software Anda, bukan hanya membacanya.
- Konteks Lokal Anda: Hal ini sangat penting. Gemini CLI berjalan sebagai proses di mesin lokal Anda, dengan izin yang sama seperti akun pengguna Anda. Artinya, Gemini dapat mengakses sistem file Anda untuk memberikan bantuan khusus project. Ini bukan layanan cloud yang jauh yang menebak-nebak kode Anda; ini ada di sini bersama Anda.
- Ekosistem Alat: Ini adalah cara model berinteraksi dengan dunia. Model ini memiliki serangkaian fungsi yang terdefinisi dengan baik yang dapat dipanggilnya—seperti
read_fileataurun_shell_command. Anggap saja seperti API yang aman. Model akan memutuskan apa yang harus dilakukan dan alat mana yang harus digunakan, lalu membuat bloktool_codeuntuk mengeksekusinya. Hal ini membuat tindakannya dapat diprediksi dan andal. - Eksekusi Perintah Shell: Inilah keajaiban yang sebenarnya. Produk ini dapat menjalankan perintah apa pun di subshell
bash -c <command>. Fungsi ini mengambilstdout,stderr, danexit code. Ini luar biasa! Artinya, Gemini CLI dapat menjalankan perintah, memeriksa apakah perintah gagal, lalu mencoba memperbaikinya berdasarkan pesan error. - Jaring Pengaman: Ini adalah bagian favorit saya! Sebelum blok
tool_codetersebut dieksekusi, klien CLI akan menampilkan perintah atau kode exact dan meminta konfirmasi Anda. Ini adalah pemeriksaan sisi klien, jadi Anda memiliki keputusan akhir sebelum ada yang menyentuh sistem Anda. Anda selalu memegang kendali.
Ini bukan sekadar chatbot, tetapi juga bisa melakukan tindakan. Asisten aktif dalam petualangan coding Anda.
Konsep Utama: Deklaratif vs. Imperatif
Perubahan terbesar dan paling mengagumkan adalah beralih dari memberi tahu komputer cara melakukan sesuatu menjadi memberi tahu komputer apa yang Anda inginkan.
- Imperatif (Jalan Lama yang Berliku): Anda harus memberikan setiap langkah. Anda harus menjadi ahli dalam bahasa domain tertentu alat tersebut. Seperti perintah yang sangat panjang ini:
Astaga! Lihat semua itu! Anda harus mengetahui sintaksis untuk jenis mesin, kelompok image, metadata, dan tag. Lewatkan satu bagian, dan Anda akan mendapatkan error yang tidak jelas.gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev - Deklaratif (Pintasan Sparky!): Anda cukup mengatakan apa yang Anda inginkan dalam bahasa Inggris yang mudah dipahami.
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
Selesai. Gemini mengurai permintaan Anda, memetakannya ke parameter alat gcloud, menentukan sintaksis yang benar untuk setiap tanda, dan membuat perintah besar yang menakutkan itu untuk Anda. Kemudian, Anda akan diminta menyetujuinya. Semuanya tentang membiarkan Anda menjadi pemikir gambaran besar, bukan penghafal tanda command line.
Memperluas Kemampuan Gemini: Pengantar Ekstensi CLI
Meskipun Gemini CLI adalah alat canggih yang siap digunakan, potensi sebenarnya dapat diwujudkan melalui ekstensi. Ekstensi adalah kumpulan perintah, alat, dan perintah kustom yang meningkatkan fungsi CLI, sehingga Anda dapat menyesuaikannya dengan kebutuhan dan alur kerja spesifik Anda.
Menemukan dan Menginstal Ekstensi
Gemini CLI memiliki ekosistem ekstensi yang terus berkembang yang dibuat oleh developer Google dan pihak ketiga. Anda dapat menjelajahi direktori ekstensi resmi di geminicli.com/extensions.
Untuk menginstal ekstensi, Anda dapat menggunakan perintah gemini extensions install dengan URL repositori Git ekstensi. Misalnya, untuk menginstal ekstensi Cloud SQL untuk PostgreSQL resmi, Anda akan menjalankan:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Oke, cukup bicara! Mari kita coba langsung!
2. Sebelum memulai

Halo, calon ahli cloud! Sparky siap membantu Anda. Sebelum memulai petualangan besar ini, kita harus memastikan lingkungan workshop Anda sudah siap. Anggap saja seperti mengemas tas kita dengan semua alat yang tepat dan biji pohon ajaib sebelum kita pergi ke hutan. Ikuti saya!
Jika sudah memiliki project Google Cloud, Anda dapat menggunakan Gemini CLI dalam Google Cloud Shell karena sudah diinstal sebelumnya dengan Gemini CLI. Atau, ikuti langkah-langkah berikut untuk menyiapkannya di komputer lokal Anda.
Langkah 1: Kebutuhan Dasar (Prasyarat)
Setiap petualang yang hebat membutuhkan fondasi yang kuat. Sebelum menginstal Gemini CLI, Anda perlu menyiapkan beberapa hal di komputer lokal Anda.
- Google Cloud SDK (
gcloud): Ini adalah toolkit utama untuk Google Cloud. Gemini CLI adalah bagian dari rangkaian ini.
- Periksa apakah sudah diinstal: Jalankan
gcloud --version. Jika Anda melihat nomor versi, Anda siap memulai! - Jika belum diinstal: Ikuti petunjuk resmi di cloud.google.com/sdk/docs/install.
- Git: Kita akan memerlukan ini untuk meng-clone repositori lab interaktif.
- Periksa apakah sudah diinstal: Jalankan
git --version. - Jika belum diinstal: Anda bisa mendapatkannya dari git-scm.com/downloads.
- Project & Autentikasi GCP:
- Pastikan Anda memiliki Project Google Cloud dengan penagihan diaktifkan. Hal ini sangat penting.
- Login ke Akun Google Anda dengan menjalankan:
gcloud auth login
- Tetapkan project Anda untuk sesi. Temukan Project ID Anda dari Konsol GCP dan jalankan:
gcloud config set project YOUR_PROJECT_ID
(Ganti YOUR_PROJECT_ID dengan project ID Anda yang sebenarnya!)
- Node.js versi 20 atau yang lebih baru
Langkah 2: Dapatkan Keajaiban! (Menginstal Gemini CLI)
Baiklah, setelah memahami dasar-dasarnya, saatnya kita masuk ke topik utama. Kita akan menginstal Gemini CLI.
Langsung jalankan dengan npx
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
Menginstal secara global dengan npm
npm install -g @google/gemini-cli
Instal secara global dengan Homebrew (macOS/Linux)
brew install gemini-cli
Memeriksa Versi Gemini
gemini --version
Anda akan melihat nomor versi. Hal ini mengonfirmasi bahwa penginstalan berhasil.
Langkah 3: Mengaktifkan (Konfigurasi)
Setelah Gemini CLI diinstal, kita perlu memberinya akses ke semua fitur. Pertama, luncurkan dengan menjalankan perintah gemini di terminal. Anda akan melihat layar berikut:

Untuk mempermudah, Anda dapat melakukan autentikasi dengan Akun Google Anda, yang memberi Anda akses ke Gemini 2.5 Pro dengan jendela konteks 1M token dan hingga 60 permintaan/menit dan 1.000 permintaan/hari tanpa perlu mengelola kunci API.
Jika Anda ingin mengakses model Gemini tertentu atau melakukan upgrade ke batas yang lebih tinggi jika diperlukan, gunakan Kunci API Gemini sebagai metode autentikasi.
Untuk tim Enterprise dan workload Produksi yang sudah menyiapkan Project Google dan Akun Penagihan, gunakan Vertex AI untuk keamanan dan kepatuhan tingkat lanjut.
Bergantung pada opsi yang Anda pilih, Anda akan diminta untuk melakukan langkah-langkah selanjutnya guna mengonfigurasi autentikasi. Lihat dokumentasi Gemini CLI untuk mengetahui detail selengkapnya tentang opsi ini.
Jika Anda ingin menggunakan platform Vertex AI Google Cloud, keluar terlebih dahulu dari Gemini CLI dengan menekan ctrl+c dua kali, lalu tetapkan variabel lingkungan yang diperlukan
Terlepas dari metode autentikasi Anda, biasanya Anda perlu menyetel variabel berikut: GOOGLE_CLOUD_PROJECT dan GOOGLE_CLOUD_LOCATION.
Untuk menetapkan variabel ini:
# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
Sekarang, mari kita login ke Google Cloud:
gcloud auth application-default login
Setelah Anda melakukan autentikasi dengan metode sebelumnya, luncurkan kembali Gemini CLI dengan menjalankan perintah gemini di terminal. Di opsi autentikasi, pilih Vertex AI dan Anda sudah siap.
Langkah 4: Uji Kilau! (Memverifikasi Penyiapan Anda)
Inilah saat penentuan! Mari kita lihat apakah semuanya berfungsi. Jalankan perintah ini untuk memastikan semua lampu berwarna hijau.
- Masukkan perintah berikut:
What is my current directory?
Gemini CLI akan merespons dengan memberi tahu Anda direktori kerja saat ini. Hal ini menguji integrasi shell dan model bahasa inti.

- Uji Koneksi GCP:
list my gcs buckets
Jika Anda memiliki bucket GCS, bucket tersebut akan tercantum. Jika tidak ada, aplikasi akan memberi tahu Anda bahwa tidak ada yang cocok. Langkah ini mengonfirmasi bahwa project tersebut terhubung ke project GCP Anda dengan benar.
Langkah 5: Memberinya lebih banyak Kemampuan Super! (Menginstal Ekstensi)
Sekarang, mari kita tingkatkan kemampuan Gemini CLI dengan menginstal beberapa ekstensi yang akan berguna nanti di Lab.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Keamanan Gemini CLI
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Cloud SQL untuk PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Jika semua perintah tersebut berhasil, Anda sudah siap mengikuti workshop. Lingkungan Anda sudah disiapkan, dan Anda siap untuk mulai meningkatkan produktivitas. Sampai jumpa di lab pertama.
3. Konsep Inti & Interaksi Ruang Kerja Lokal

Oke, siap mengotori tangan? Sekarang kita akan melihat alat yang sebenarnya dalam toolset Gemini baru Anda. Saya menganggapnya sebagai kemampuan super saya untuk menjelajahi dan membangun di cloud. Mari kita bahas sedikit cara kerjanya.
Kemampuan Inti
Saya mengelompokkan kemampuan saya ke dalam dua kategori: melihat apa yang ada di luar sana, dan kemudian benar-benar melakukan sesuatu.
Memahami Lingkungan Anda (Indra Super Saya!)
Sebelum mulai membangun sarang baru, Anda harus memeriksa pohonnya, bukan? Alat ini digunakan untuk memahami situasi.
list_directory: Ini adalah alat 'mencari-cari' dasar saya. Ini adalah wrapper langsung di sekitar listingan direktori tingkat OS standar. Namun, bagian yang menarik adalah model dapat mengurai output terstruktur ini untuk membuat keputusan, seperti memilih untuk menjelajahi subdirektori bernamasrc.glob: Yang ini adalah 'pencari biji pohon ek' saya. Pola ini menggunakan pola glob standar—seperti*,**,?, dan[]—yang sudah Anda ketahui dari hal-hal seperti.gitignore. Jadi, Anda dapat mengajukan pertanyaan, 'Temukan semua file*.pydi direktoriapp' dengan menggunakan polaapp/**/*.py. Cara ini adalah cara yang efektif untuk mengumpulkan sekumpulan file tertentu agar dianalisis oleh model.search_file_content: Ini adalah penglihatan sinar-X saya! Fitur ini menggunakan ekspresi reguler (regex) lengkap untuk penelusurannya, bukan hanya pencocokan string sederhana. Hal ini sangat efektif. Anda dapat memintanya untuk menemukan pola yang kompleks, seperti 'Temukan semua rute Flask yang menggunakan metode POST', yang dapat menghasilkan regex sepertiapp\.route\(.*methods=\['POST'\].*\). Fungsi ini menampilkan jalur file, nomor baris, dan baris yang cocok, sehingga memberikan semua konteks yang diperlukan model.read_file: Setelah menemukan file yang menarik, Anda pasti ingin membukanya.read_filedioptimalkan untuk hal ini. Anda dapat membaca seluruh file, atau, untuk file besar, Anda dapat menggunakan parameteroffsetdanlimituntuk membacanya dalam potongan. Artinya, model dapat memindai file log yang sangat besar secara efisien tanpa mengalami waktu tunggu habis.
Dari Pemahaman hingga Tindakan (Saatnya Membangun!)
Oke, Anda telah menjelajahi medan. Sekarang saatnya membangun sarang Anda. Alat ini memungkinkan Anda membuat perubahan dan menyelesaikan berbagai hal.
**write_file**: Perlu membuat file baru dari awal?write_fileadalah operasi atomik yang menulis konten lengkap yang Anda berikan ke jalur yang ditentukan. Cara ini sangat cocok untuk membuat kerangka modul baru atau membuatDockerfiledari awal berdasarkan kebutuhan project Anda.**replace**: Alat ini digunakan untuk perubahan yang sangat spesifik. Ini bukan hanya sekadar temukan dan ganti. Anda memberikanold_stringdannew_string. Agar dapat berfungsi dengan aman,old_stringharus berupa cuplikan unik dari file, biasanya dengan beberapa baris konteks sebelum dan sesudah bagian yang Anda ubah. Hal ini memastikan kita hanya mengubah bagian kode yang exact yang ingin Anda ubah.**run_shell_command**: Ini adalah peningkatan kualitas terbaik! Perintah ini menjalankan perintah yang diberikan di subshellbash -c <command>. Model akan mendapatkan kembalistdout,stderr, danexit code. Hal ini sangat penting untuk membangun alur kerja. Model dapat menjalankanterraform plan, membaca output, dan jika rencana berhasil (kode keluar 0), model dapat menanyakan apakah rencana tersebut harus diterapkan.
Safety Net (Janji Saya kepada Anda)
Sekarang, menjalankan perintah bisa jadi menakutkan. Saya mengerti. Itulah sebabnya jaring pengaman sangat penting. Saat model menghasilkan blok tool_code yang berisi panggilan ke run_shell_command atau write_file, klien Gemini CLI akan mencegatnya. Fitur ini akan menampilkan perintah persisnya atau konten lengkap file yang akan ditulis dan memberi Anda perintah [y/n]. Tidak ada yang terjadi tanpa persetujuan eksplisit Anda. Anda selalu memegang kendali.
4. Mempelajari Project

Tujuan: Menggunakan Gemini CLI untuk memahami codebase yang tidak dikenal tanpa keluar dari terminal.
Skenario: Anda adalah developer baru, dan Anda perlu memahami project ini dengan cepat.
Tugas 0: Penyiapan - Clone Project
Pertama-tama, kita perlu mendapatkan kodenya. Tersembunyi di repositori publik di GitHub, dalam ‘tree' bernama quickpoll. Mari kita minta Gemini CLI untuk meng-clone-nya. Sebelum melakukannya, mari buat direktori kerja dan luncurkan Gemini CLI dari dalam direktori kerja:
mkdir workdir
cd workdir
gemini
Sekarang, ketik perintah ini:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini akan memahami bahwa 'clone' berarti menggunakan perintah git clone. Tindakan ini akan menghasilkan panggilan alat run_shell_command dengan sesuatu seperti git clone https://github.com/gauravkakad-google/quickpoll.git. Setelah Anda menyetujuinya, aplikasi akan mendownload repositori untuk Anda.
Sekarang, mari kita keluar dari Gemini CLI dengan menekan ctrl+c dua kali, membuka repositori contoh, dan meluncurkan Gemini CLI lagi:
cd quickpoll
gemini
Bagus! Setelah berada di dalam hierarki project, kita dapat mulai menjelajah.
Tugas 1: Mencantumkan semua file dalam project
Sekarang kita sudah masuk, mari kita petakan seluruh hutan. Kita ingin melihat setiap file. Tanyakan hal ini kepada Gemini:
List all the files in the project.
Gemini kemungkinan akan menggunakan alat glob dengan pola **/*. Perintah ini akan mencantumkan setiap file secara rekursif, sehingga memberi Anda manifes lengkap codebase. Ini adalah langkah pertama yang bagus untuk memahami struktur project.
Tugas 2: Temukan semua file yang mengimpor 'google.cloud.sql.connector'
Oke, saya penasaran. Di mana project ini berkomunikasi dengan Google Cloud Storage? Mari kita lakukan penyelidikan. Tanyakan ini:
Find all files that import the 'google.cloud.sql.connector' library.

Dengan kemampuan search_file_content, Gemini akan menemukan file persis yang berisi pernyataan impor tersebut. Hal ini akan langsung mempersempit fokus Anda ke bagian kode yang menangani interaksi Cloud SQL. Dalam project ini, backend/main.py akan ditemukan.
Tugas 3: Tunjukkan isi Dockerfile utama
Saya melihat Dockerfile. Itulah cetak biru untuk container kita. Mari kita lihat isinya. Cukup tanyakan:
Show me the contents of the main Dockerfile.

Gemini akan menggunakan read_file untuk menampilkan Dockerfile. Anda dapat menganalisis image dasar (FROM), dependensi yang diinstal (RUN pip install...), dan perintah akhir (CMD). Hal ini memberi tahu Anda tentang lingkungan runtime aplikasi.
Tugas 4: Apa tujuan file main.py?
Baiklah, saatnya melihat inti kode. Mari kita minta Gemini untuk menjadi panduan kita. Ucapkan ini:
What's the purpose of the `main.py` file?

Di sinilah keunggulan Gemini CLI terlihat. Pertama-tama, API akan memanggil read_file di backend/main.py. Kemudian, model bahasa multimodalnya akan menganalisis kode Python. Aplikasi ini akan mengidentifikasi bahwa aplikasi tersebut adalah aplikasi FastAPI yang menyediakan REST API untuk aplikasi polling. Kemudian, API akan menjelaskan endpoint API dan fungsinya. Dengan begitu, Anda tidak perlu membaca dan menguraikan semuanya sendiri. Anda juga dapat mengajukan pertanyaan lanjutan untuk menjelaskan beberapa fungsi ini secara mendetail. Cukup rapi, kan? Silakan coba!
5. Dari Lokal ke Aktif! Men-deploy dengan Cloud Run & Cloud SQL

Oke, petualang cloud, Anda telah menjelajahi wilayahnya. Sekarang saatnya membangun rumah pohon Anda sendiri di cloud. Kita akan mengambil aplikasi quickpoll dan menjadikannya aplikasi web live yang nyata yang dapat dikunjungi siapa saja.
Tujuan: Men-deploy aplikasi quickpoll ke Cloud Run, dengan backend Cloud SQL untuk PostgreSQL.
Tugas 1: Cabang yang Kuat untuk Data Kita (Menyiapkan Cloud SQL)
Setiap aplikasi yang baik memerlukan tempat untuk menyimpan biji-biji berharganya... Maksud saya, data! Kita akan menggunakan Cloud SQL untuk PostgreSQL. Ini seperti taman ajaib yang merawat dirinya sendiri untuk database kita, sehingga kita dapat berfokus pada hal-hal yang menyenangkan.
Mari kita minta Gemini CLI untuk menanam benih database kita.
Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

Gemini CLI, menggunakan ekstensi Cloud SQL, akan mulai bekerja. Bagian ini akan menampilkan panggilan alat create_instance. Lanjutkan dan setujui.
Setelah instance dibuat, Anda akan melihat output yang mirip dengan ini:

Anda dapat membuat file .env dengan variabel lingkungan di atas dan memanggilnya sebelum memulai ulang Gemini CLI, sehingga Gemini CLI akan memiliki akses ke variabel ini.
Saat instance kita berkembang, mari kita siapkan tanahnya. Kita memerlukan database dan pengguna untuk aplikasi kita.
In the quickpoll-db instance, create a new database named quickpolldb.
Gemini CLI akan menggunakan alat create_database di ekstensi Cloud SQL untuk PostgreSQL guna membuat database untuk Anda.

Sekarang mari tambahkan pengguna untuk mengurusnya:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
Kali ini, Gemini CLI akan menggunakan alat create_user.

Tugas 2: The Secret Path (Menghubungkan Backend)
Backend kita perlu mengetahui jalur rahasia ke database baru kita. Mari kita lihat backend/main.py untuk melihat cara kerjanya.
show me how would the backend/main.py connect to the database

Aha! Lihat itu? Aplikasi ini menggunakan Cloud SQL Python Connector dan mencari variabel lingkungan seperti CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD, dan CLOUD_SQL_POSTGRES_DATABASE. Kita perlu memberikannya ke layanan Cloud Run.
Pertama, kita memerlukan CLOUD_SQL_POSTGRES_INSTANCE. Ini seperti jabat tangan rahasia.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

Anda akan melihat sejumlah detail. Cari Nama Koneksi dan salin nilai tersebut. Tampilannya akan terlihat seperti your-project-id:us-central1:quickpoll-db.
Sebelum men-deploy aplikasi ke Cloud Run, mari buat instance database dengan tabel yang diperlukan. Karena kita telah membuat database dan pengguna terpisah, keluar dari Gemini CLI dan perbarui .env yang kita buat sebelumnya dengan nilai baru:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Sekarang mulai ulang Gemini CLI dan masukkan perintah berikut:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

Secara otomatis, alat ini mengetahui bahwa execute_sql tidak mendukung eksekusi beberapa perintah SQL dalam satu panggilan. Jadi, perintah tersebut akan menjalankan setiap perintah SQL secara terpisah.
Tugas 3: Backend, Take Flight! (Men-deploy ke Cloud Run)
Saatnya backend kita keluar dari sarang! Kita akan meminta Gemini untuk men-deploy folder backend ke Cloud Run dan memberikan jalur rahasia ke database.
Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Gemini akan mengemas kode Anda, membuat image container, dan men-deploy-nya ke Cloud Run. Setelah selesai, yang dapat memakan waktu beberapa menit, Anda akan mendapatkan URL untuk layanan backend baru yang canggih. Simpan URL tersebut.

Tugas 4: Sentuhan Akhir (Mengonfigurasi dan Men-deploy Frontend)
Frontend kami seperti wajah ramah aplikasi kami. Aplikasi ini perlu mengetahui lokasi backend. Mari kita beri tahu tujuannya.
Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

Tugas 5: Pengungkapan Besar!
Selesai. Saat penentuan! Dapatkan URL untuk layanan quickpoll-fe Anda dan buka di browser web Anda.
Anda akan melihat aplikasi QuickPoll Anda, yang sudah aktif dan siap digunakan. Lanjutkan, buat polling, berikan suara, dan lihat hasilnya diperbarui secara real-time.
Anda berhasil! Anda telah mengambil project dari komputer lokal dan mewujudkannya di Google Cloud. Dan Anda melakukannya semua dari terminal dengan nyaman bersama asisten tepercaya Anda, Gemini CLI.
Itulah yang saya sebut produktivitas.
6. Untuk Developer - Mempercepat Siklus Proses Pengembangan

Oke, developer, di sinilah keseruan yang sesungguhnya dimulai. Kita telah menjelajahi project, tetapi sekarang saatnya untuk membangun. Saya akan menunjukkan cara Gemini dapat menjadi partner coding terbaik Anda, membantu Anda mengubah ide sederhana menjadi kode siap produksi lebih cepat daripada tupai menemukan kacang!
Dari Ide ke Kode
Pikirkan siklus pengembangan yang umum. Ini bukan hanya menulis kode, bukan? Ini mencakup pembuatan kerangka, penambahan penanganan error, pemfaktoran ulang, dan penulisan pengujian. Gemini dapat membantu Anda dalam semua hal tersebut.
Boilerplate & Tugas Berulang: Tidak Perlu Lagi Menyalin-Menempel!
Oke, Anda telah memiliki fungsi aplikasi dasar. Sekarang Anda perlu menambahkan logging dan menangani potensi error, bukan? Biasanya ada banyak blok try...except yang berulang. Tidak lagi. Mari kita mulai dengan meminta Gemini CLI menganalisis kode dan menyarankan rekomendasi praktik terbaik untuk pencatatan error dan penanganan pengecualian:
What are the best practices for error handling and logging that should also be included in this application?

Gemini CLI akan menganalisis file yang ada dan memberikan beberapa rekomendasi praktik terbaik. Anggap saja alat ini sebagai asisten ahli yang dapat menghemat waktu Anda dalam melakukan riset sendiri.
Sekarang, mari minta Gemini untuk menerapkan rekomendasi ini untuk Anda:
please go ahead and implement these in the existing app
Output sebenarnya mungkin berbeda dalam kasus Anda, tetapi pada akhirnya Anda akan melihat detail perubahan yang telah dilakukan. Misalnya, pada screenshot di bawah, Anda dapat melihat bahwa structlog telah ditambahkan untuk menghasilkan log berformat JSON, menerapkan penanganan pengecualian terpusat, dan meningkatkan cara log respons permintaan dicatat. Pikirkan semua pengetikan yang baru saja Anda hemat!

Pemfaktoran Ulang: Peninjau Kode Pribadi Anda
Kita semua ingin menulis kode yang bersih dan efisien. Namun, terkadang kita terburu-buru. Gemini dapat bertindak sebagai peninjau kode pribadi Anda. Anda dapat menanyakan hal-hal seperti:
please perform a comprehensive code review for best practices and security


Gemini memahami praktik terbaik khusus bahasa. Sekali lagi, output sebenarnya dalam kasus Anda mungkin berbeda dengan screenshot di atas, tetapi jika Anda membaca outputnya, Anda akan mengapresiasi tingkat detail yang telah dilakukan Gemini CLI untuk menganalisis kode. Hal ini membantu Anda mempelajari dan meningkatkan kualitas kode secara bersamaan.
Pembuatan Pengujian: Bagian Terbaik!
Ini trik favoritku! Kita semua tahu bahwa kita harus menulis pengujian, tetapi hal ini bisa membosankan, terutama saat Anda harus membuat tiruan. Nah, coba lihat ini. Anda cukup bertanya:
Add a test suite to this application



Gemini akan menganalisis fungsi Anda, mengidentifikasi input dan outputnya, serta mencari tahu dependensinya. Kemudian, file test_main.py lengkap dengan beberapa kasus pengujian, termasuk 'jalur tanpa error' dan mungkin kondisi error, akan dibuat. Ini adalah peningkatan produktivitas yang sangat besar.
Jalankan Pengujian. (Tugas Tantangan untuk Anda)
Nah, di sinilah semuanya menjadi sangat menarik! Kami akan membiarkan bagian ini sebagai tantangan bagi Anda untuk menjelajahinya secara mandiri. Anda dapat meminta Gemini CLI untuk menjalankan kasus pengujian yang telah dibuatnya. Kemudian, cukup duduk dan saksikan keajaiban terjadi.
7. Di Luar Localhost: Mengintegrasikan dengan GitHub

Kita telah melakukan beberapa pekerjaan luar biasa di mesin lokal, sudut kecil hutan kita sendiri. Namun, keunggulan sebenarnya dari cloud adalah kolaborasi dan koneksi. Saatnya untuk terbang dan melihat bagaimana Gemini dapat berinteraksi dengan dunia yang lebih luas, dimulai dengan pohon terbesar di hutan developer: GitHub.
Konsep: Asisten DevOps Terintegrasi Anda
Sejauh ini, kita telah menggunakan Gemini sebagai teman coding lokal. Sekarang, kita akan mengupgrade-nya menjadi Asisten DevOps Terintegrasi yang lengkap. Semua ini berkat integrasi Model Context Protocol (MCP). Nama ini memang keren, tetapi artinya Gemini dapat berkomunikasi dengan aman dengan layanan lain atas nama Anda, dan yang pertama akan kita kuasai adalah GitHub.
Coba pikirkan. Seberapa sering Anda harus keluar dari terminal untuk memeriksa permintaan pull, membuat masalah, atau menjelajahi repositori di GitHub? Itu lebih banyak pengalihan konteks! Dengan set alat github, Anda dapat melakukan semua itu di sini. Fitur ini mengubah Gemini menjadi antarmuka native untuk GitHub.
Dokumentasi Server MCP GitHub resmi memberikan panduan yang memadai tentang alat dan opsi konfigurasi yang dieksposnya. Anda bebas memilih antara operasi lokal atau jarak jauh, karena Gemini CLI sepenuhnya mendukung Server MCP jarak jauh.
Tutorial ini akan memandu Anda menyiapkan opsi Server MCP Jarak Jauh untuk GitHub. Pertama-tama, Anda memerlukan Token Akses Pribadi (PAT) dari GitHub.
Setelah mendapatkan PAT, saatnya menambahkan objek MCP Server ke file settings.json. File settings.json lengkap saya ditampilkan di bawah, tetapi Anda cukup memastikan objek mcpServers Anda cocok dengan yang Anda lihat di sini:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
Setelah Anda memperbarui settings.json dengan konfigurasi Server MCP GitHub, cukup mulai ulang Gemini CLI atau jalankan perintah /mcp refresh. Screenshot di bawah ini menunjukkan Server MCP GitHub yang kini siap di sistem saya, yang menampilkan serangkaian alat canggih yang kini dapat digunakan Gemini CLI dengan Model Context Protocol.

Tampilan Perintah Utama
Gemini hadir dengan serangkaian kemampuan baru khusus untuk GitHub. Berikut beberapa favorit saya:
github.list_repositories: Ingin melihat semua repositori di organisasi Anda tanpa membuka browser? Ini adalah alat Anda. Cukup tanyakan, 'Buat daftar semua repositori di organisasi saya.'github.create_issue: Menemukan bug? Jangan beralih jendela untuk membuat masalah. Anda cukup memberi tahu Gemini, 'Buat masalah di reposample-flask-appberjudul "Perbaiki bug login" dengan deskripsi ini...' dan voila, masalah akan dibuat.github.get_pull_request: Perlu memeriksa PR? Anda dapat bertanya, 'Tampilkan detail nomor PR 42 di reposample-flask-app.' Gemini akan mengambil judul, deskripsi, status, dan siapa saja pengulasnya.github.get_file_contents: Yang ini sangat keren. Anda dapat membaca file dari repositori jarak jauh, tanpa harus meng-clone-nya terlebih dahulu. Fitur ini sangat berguna untuk memeriksa file konfigurasi atau README project dengan cepat yang tidak Anda miliki secara lokal.
8. Eksplorasi GitHub

Cukup sudah, ayo terbang! Kita akan menggunakan kemampuan GitHub baru untuk menjelajahi organisasi dan project, semuanya dari terminal.
Tujuan: Menggunakan Gemini untuk menjelajahi dan memahami project yang dihosting di GitHub.
Skenario: Anda perlu memahami project di GitHub yang belum pernah Anda kerjakan sebelumnya.
Tugas 1: Mencantumkan Repositori dalam Organisasi
Pertama, mari kita lihat semua project dalam organisasi GitHub. Untuk lab ini, Anda dapat menggunakan nama pengguna GitHub Anda sendiri atau organisasi tempat Anda tergabung. Mari kita minta Gemini untuk mencantumkannya.
List the repositories in the `[your-org-or-username]` GitHub organization.
(Jangan lupa untuk mengganti [your-org-or-username] dengan info Anda yang sebenarnya.) Gemini akan menggunakan alat github.list_repositories dan menampilkan daftar semua project kepada Anda. Keren!
Tugas 2: Menemukan Repositori Tertentu
Oke, Anda akan melihat daftar repositori. Sekarang, seperti developer sungguhan, Anda perlu memindai daftar tersebut dan menemukan project yang Anda minati. Untuk lab ini, mari kita berpura-pura mencari repositori quickpoll yang kita clone sebelumnya. Anda tidak memerlukan perintah untuk bagian ini—cukup baca output dari langkah terakhir dan temukan repo-nya.
Tugas 3: Mencantumkan Permintaan Pull Terbuka
Setelah mengidentifikasi repositori target, mari kita lihat apa yang terjadi dengannya. Apakah ada pull request yang belum diproses? Mari kita tanyakan:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini akan menggunakan alat github.list_pull_requests, memfilter status open. Kemudian, daftar PR yang terbuka akan ditampilkan, yang menunjukkan nomor PR, judul, dan siapa yang membuatnya. Ini adalah tampilan instan Anda ke pengembangan aktif project. Anda dapat mencobanya dengan repositori yang secara aktif Anda kontribusikan dan memeriksa hasilnya.

Tugas 4: Menyelidiki Permintaan Pull
Misalnya, ada PR menarik dalam daftar tersebut. Kami ingin tahu lebih banyak tentang hal itu. Kita ingin melihat deskripsi dan file apa yang diubah. Pilih nomor PR dari daftar (jika tidak ada, Anda dapat melewati langkah ini, tetapi mari kita bayangkan ada satu).
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
Ini adalah contoh bagus tugas multi-langkah untuk Gemini. Pertama, kemungkinan akan menggunakan github.get_pull_request untuk mengambil detail utama—judul, isi, penulis, dll. Kemudian, untuk mendapatkan perubahan file, ia akan menggunakan alat kedua, github.get_pull_request_files. Kemudian, Gemini akan menggabungkan semua informasi ini menjadi ringkasan yang rapi dan jelas untuk Anda. Anda baru saja meninjau PR tanpa harus keluar dari terminal. Luar biasa, bukan?!
9. Dari PRD hingga Commit Awal

Anda telah mempelajari cara menjelajahi, membangun, dan menguji. Sekarang, kita akan menggabungkan semuanya dalam skenario dunia nyata. Ini adalah saat kita mengubah rencana menjadi produk. Kita akan mulai dari Dokumen Persyaratan Produk (PRD) hingga commit pertama. Mari kita bangun sesuatu yang luar biasa!
Tujuan: Mensimulasikan tugas pengembangan dunia nyata dari awal hingga akhir, menggabungkan konteks lokal dan jarak jauh.
Skenario: Anda telah ditugasi untuk mengerjakan fitur baru. Persyaratan menanti Anda dalam file PRD di dalam repositori GitHub project.
Tugas 1: Pahami - Baca PRD
Ini adalah langkah yang paling penting. Sebelum Anda berpikir untuk menulis satu baris kode pun, Anda harus memahami rencana tersebut. Persyaratan fitur baru kami ada di file prd/NEW_FEATURE.md. Mari kita buka dan lihat isinya.
explain the requirements mentioned in prd/NEW_FEATURE.md
Gemini CLI akan menggunakan read_file untuk menampilkan konten PRD. Mulai! Dokumen ini akan menguraikan fitur baru: tombol Muat Ulang bagi pengguna untuk memperbarui daftar polling aktif secara manual. Selalu konsultasikan cetak biru terlebih dahulu.

Tugas 2: Kode - Menerjemahkan Persyaratan menjadi Kenyataan
Ini adalah momen ajaibnya! Kita akan mengambil persyaratan dari PRD dan meminta Gemini untuk menulis kode untuk kita. Mari kita tentukan dan beri tahu persis apa yang kita inginkan.
Implement the changes as per the PRD
Gemini CLI akan mulai beraksi, dan setelah beberapa saat, Anda akan melihat output yang mirip dengan ini. Kode baru yang cemerlang kini memiliki tempat yang nyaman.

Tugas 3: Memverifikasi Perubahan Anda
Kita telah membuat file baru dengan kode baru. Langkah terakhir untuk lab ini adalah men-deploy perubahan ke Cloud Run dan memverifikasinya.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
Perhatikan bagaimana perintah tersebut memberikan detail tambahan, seperti nama layanan Cloud Run yang ada dan region deployment-nya. Menjadi spesifik akan menghemat waktu, meskipun Gemini CLI akan selalu meminta detail yang tidak ada jika Anda tidak menyertakannya.
Jika layanan Cloud Run yang diperbarui mengalami error, cukup minta Gemini CLI untuk men-debug dan memperbaiki kode. Ingat, ini adalah pendamping super Anda.
10. Selamat

Selesai. Anda baru saja menyelesaikan siklus pengembangan penuh. Anda beralih dari dokumen persyaratan ke fitur baru, yang siap di-commit dan di-push. Anda menggabungkan konteks lokal, konteks jarak jauh, operasi sistem file, dan pembuatan kode. Anda bukan hanya developer; Anda adalah arsitek cloud yang sangat produktif. Selamat!