1. Wprowadzenie

Cześć! Nazywam się Sparky. Cieszę się, że udało Ci się dotrzeć. Przyleciałem z klastra GKE w us-central1, żeby tu dziś być. Witamy w tym ćwiczeniu.
Całe życie spędziłem na przeglądaniu strumieni danych Google Cloud i widziałem już wszystko. Widziałem, jak Ty, architekci i inżynierowie budujecie niesamowite rzeczy. Ale widziałem też, jak utknąłeś w krzakach. Wiesz, o czym mówię. To uczucie przełączania kontekstu podczas debugowania poda w GKE. Przełączasz się między kubectl logs, konsolą GCP, aby sprawdzić stan węzła, IDE, aby przejrzeć wdrożony kod źródłowy, i kartą przeglądarki z oficjalną dokumentacją Kubernetes dotyczącą punktów zaczepienia cyklu życia poda. Każdy skok to przerwa w skupieniu.
I skomplikowane narzędzia. gcloud, kubectl, terraform… każdy z własnym DSL-em i górą flag. Prowadzi to do ciągłego poszukiwania dokumentacji. W końcu szukasz idealnego polecenia gcloud z odpowiednią kombinacją flag --filter i --format, aby uzyskać potrzebne dane. To jak szukanie konkretnego orzecha w lesie pełnym milionów innych. Nie wspominając już o powtarzalnych zadaniach. Widzę, że tak często piszesz te same Dockerfile i cloudbuild.yaml w przypadku nowej usługi w Pythonie, że kod pewnie ma déjà vu.
Chcę Ci pokazać lepszy sposób. tajną ścieżkę przez las, Właśnie o to chodzi w interfejsie wiersza poleceń Gemini.
Czym jest interfejs wiersza poleceń Gemini?
Jaki jest ten magiczny skrót, który tak mnie ekscytuje?
Interfejs wiersza poleceń Gemini to Twój osobisty towarzysz w chmurze, dostępny bezpośrednio w terminalu. To rozmowa, partnerstwo. Jest świadomy kontekstu, co oznacza, że nie tylko słucha, ale też rozumie. Może odczytywać Twoje pliki, poznawać konwencje projektu, np. czy używasz tabulatorów czy spacji, i domyślać się, co chcesz zrobić. To tak, jakbym wyczuwał żołędzie, które próbujesz zebrać.
Architektura wysokiego poziomu (zajrzyjmy pod maskę!)
Jak to działa? To połączenie kilku ciekawych elementów, które działają w harmonii:
- Zaawansowany model językowy: to mózg! Jest to duży model multimodalny wytrenowany przez Google. „Wielomodalny” oznacza, że nie tylko rozumie tekst, ale też strukturę i znaczenie kodu. Dzięki temu może analizować oprogramowanie, a nie tylko je odczytywać.
- Twój lokalny kontekst: to kluczowe. Interfejs wiersza poleceń Gemini działa jako proces na komputerze lokalnym z tymi samymi uprawnieniami co Twoje konto użytkownika. Oznacza to, że może uzyskać dostęp do systemu plików, aby zapewnić pomoc dotyczącą projektu. To nie jest jakaś odległa usługa w chmurze, która zgaduje, co zawiera Twój kod. Jest ona dostępna bezpośrednio na Twoim urządzeniu.
- Ekosystem narzędzi: w ten sposób model wchodzi w interakcje ze światem. Ma dobrze zdefiniowany zestaw funkcji, które może wywoływać, np.
read_filelubrun_shell_command. Możesz go traktować jako bezpieczny interfejs API. Model decyduje, co zrobić i którego narzędzia użyć, a następnie generujetool_codeblok, aby to wykonać. Dzięki temu jego działania są przewidywalne i niezawodne. - Wykonywanie poleceń w powłoce: to prawdziwa magia. Może uruchomić dowolne polecenie w
bash -c <command>podpowłoce. Rejestrujestdout,stderriexit code. To ogromna zmiana! Oznacza to, że interfejs wiersza poleceń Gemini może uruchomić polecenie, sprawdzić, czy się nie powiodło, a następnie spróbować rozwiązać problem na podstawie komunikatu o błędzie. - Sieć bezpieczeństwa: to moja ulubiona część! Zanim zostanie wykonany ten
tool_codeblok, klient interfejsu wiersza poleceń wyświetli exact polecenie lub kod i poprosi o potwierdzenie. Jest to weryfikacja po stronie klienta, więc masz ostateczne zdanie, zanim cokolwiek dotknie Twojego systemu. Zawsze masz nad wszystkim kontrolę.
To nie tylko chatbot, ale też narzędzie do działania. Aktywny pomocnik w Twojej przygodzie z kodowaniem.
Kluczowe pojęcie: deklaratywność a imperatywność
Największą i najważniejszą zmianą jest przejście od mówienia komputerowi, jak coś zrobić, do mówienia mu, co chcesz osiągnąć.
- Tryb rozkazujący (stara, zawiła ścieżka): musisz podać każdy krok. Musisz być ekspertem w zakresie języka, w którym działa narzędzie. Na przykład takie polecenie:
Ojej! Spójrz tylko na to! Musisz znać składnię typu maszyny, rodziny obrazów, metadanych i tagów. Jeśli pominiesz jeden element, pojawi się niejasny błąd.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 - Deklaratywny (skrót Sparky): Wystarczy, że powiesz, co chcesz, prostym językiem angielskim.
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
Znakomicie. Gemini analizuje Twoje żądanie, mapuje je na parametry narzędzia gcloud, określa prawidłową składnię każdego flagi i tworzy za Ciebie to skomplikowane polecenie. Następnie wyświetli ją do zatwierdzenia. Chodzi o to, abyś mógł myśleć w szerszej perspektywie, a nie zapamiętywać flag wiersza poleceń.
Rozszerzanie możliwości Gemini: wprowadzenie do rozszerzeń interfejsu wiersza poleceń
Interfejs wiersza poleceń Gemini to potężne narzędzie, ale jego prawdziwy potencjał można wykorzystać dzięki rozszerzeniom. Rozszerzenia to pakiety promptów, narzędzi i poleceń niestandardowych, które zwiększają funkcjonalność interfejsu CLI, umożliwiając dostosowanie go do konkretnych potrzeb i przepływów pracy.
Znajdowanie i instalowanie rozszerzeń
Interfejs wiersza poleceń Gemini ma rosnący ekosystem rozszerzeń opracowanych zarówno przez Google, jak i przez deweloperów zewnętrznych. Oficjalny katalog rozszerzeń znajdziesz na stronie geminicli.com/extensions.
Aby zainstalować rozszerzenie, możesz użyć polecenia gemini extensions install z adresem URL repozytorium Git rozszerzenia. Aby na przykład zainstalować oficjalne rozszerzenie Cloud SQL for PostgreSQL, uruchom to polecenie:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Dobra, dość gadania! Zabierzmy się do pracy i wypróbujmy to!
2. Zanim zaczniesz

Cześć, przyszli czarodzieje chmury! Sparky do usług. Zanim wyruszymy na wielką przygodę, musimy się upewnić, że Twoje środowisko warsztatowe jest gotowe. Wyobraź sobie, że pakujemy torby ze wszystkimi odpowiednimi narzędziami i magicznymi żołędziami, zanim wyruszymy do lasu. Chodź za mną.
Jeśli masz już projekt Google Cloud, możesz używać interfejsu Gemini CLI w Google Cloud Shell, ponieważ jest on wstępnie zainstalowany. Możesz też wykonać te czynności, aby skonfigurować go na komputerze lokalnym.
Krok 1. Podstawowe wymagania
Każdy dobry poszukiwacz przygód potrzebuje solidnych podstaw. Zanim zainstalujesz interfejs wiersza poleceń Gemini, musisz skonfigurować kilka rzeczy na komputerze lokalnym.
- Google Cloud SDK (
gcloud): to główne narzędzie do obsługi Google Cloud. Interfejs wiersza poleceń Gemini jest częścią tej rodziny.
- Sprawdź, czy jest zainstalowany: uruchom polecenie
gcloud --version. Jeśli widzisz numer wersji, wszystko jest w porządku. - Jeśli nie jest zainstalowany: postępuj zgodnie z oficjalnymi instrukcjami na stronie cloud.google.com/sdk/docs/install.
- Git: będzie potrzebny do sklonowania repozytorium praktycznego modułu.
- Sprawdź, czy jest zainstalowany: uruchom polecenie
git --version. - Jeśli nie jest zainstalowany: możesz go pobrać ze strony git-scm.com/downloads.
- Projekt GCP i uwierzytelnianie:
- Sprawdź, czy masz projekt Google Cloud z włączonymi płatnościami. To bardzo ważne!
- Zaloguj się na konto Google, wpisując:
gcloud auth login
- Ustaw projekt dla sesji. Znajdź identyfikator projektu w konsoli GCP i uruchom:
gcloud config set project YOUR_PROJECT_ID
(Zastąp YOUR_PROJECT_ID identyfikatorem projektu).
- Node.js w wersji 20 lub nowszej
Krok 2. Uzyskaj Magic! (Instalowanie interfejsu wiersza poleceń Gemini)
Skoro mamy już za sobą podstawy, czas na główną atrakcję. Zainstalujemy interfejs wiersza poleceń Gemini.
Natychmiastowe uruchamianie za pomocą npx
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
Instalowanie globalne za pomocą npm
npm install -g @google/gemini-cli
Instalowanie globalne za pomocą Homebrew (macOS/Linux)
brew install gemini-cli
Sprawdzanie wersji Gemini
gemini --version
Powinien być widoczny numer wersji. Oznacza to, że instalacja została przeprowadzona prawidłowo.
Krok 3. Włączanie (konfiguracja)
Po zainstalowaniu interfejsu wiersza poleceń Gemini musimy przyznać mu uprawnienia. Najpierw uruchom go, wpisując w terminalu polecenie gemini. Powinien pojawić się ten ekran:

Aby uprościć proces, możesz uwierzytelnić się za pomocą konta Google, co zapewni Ci dostęp do Gemini 2.5 Pro z oknem kontekstu o milionie tokenów oraz do 60 żądań na minutę i 1000 żądań dziennie bez konieczności zarządzania kluczem interfejsu API.
Jeśli chcesz mieć dostęp do konkretnych modeli Gemini lub w razie potrzeby przejść na wyższe limity, użyj klucza interfejsu Gemini API jako metody uwierzytelniania.
W przypadku zespołów Enterprise i obciążeń produkcyjnych, które mają już skonfigurowany projekt Google i konto rozliczeniowe, używaj Vertex AI, aby zapewnić zaawansowane zabezpieczenia i zgodność z przepisami.
W zależności od wybranej opcji wyświetlą się kolejne kroki konfiguracji uwierzytelniania. Więcej informacji o tych opcjach znajdziesz w dokumentacji interfejsu wiersza poleceń Gemini.
Jeśli zamierzasz korzystać z platformy Vertex AI od Google Cloud, najpierw zamknij interfejs Gemini CLI, naciskając dwukrotnie Ctrl+C, a następnie ustaw wymagane zmienne środowiskowe.
Niezależnie od metody uwierzytelniania zwykle musisz ustawić te zmienne: GOOGLE_CLOUD_PROJECT i GOOGLE_CLOUD_LOCATION.
Aby ustawić te zmienne:
# 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"
Teraz zaloguj się w Google Cloud:
gcloud auth application-default login
Po uwierzytelnieniu za pomocą poprzedniej metody uruchom ponownie interfejs wiersza poleceń Gemini, wpisując w terminalu polecenie gemini. W opcjach uwierzytelniania wybierz Vertex AI.
Krok 4. Test iskry (Sprawdzanie konfiguracji)
To jest moment prawdy! Sprawdźmy, czy wszystko działa. Uruchom te polecenia, aby upewnić się, że wszystkie kontrolki świecą na zielono.
- Wpisz ten prompt:
What is my current directory?
Interfejs wiersza poleceń Gemini powinien odpowiedzieć, podając aktualny katalog roboczy. W ten sposób przetestujesz podstawowy model językowy i integrację z powłoką.

- Testowanie połączenia z GCP:
list my gcs buckets
Jeśli masz jakieś zasobniki GCS, powinny być one widoczne na liście. Jeśli nie, poinformuje Cię, że nie ma żadnych. Potwierdza to, że jest on prawidłowo połączony z Twoim projektem GCP.
Krok 5. Nadaj mu więcej supermocy (Instalowanie rozszerzeń)
Teraz rozszerzmy możliwości interfejsu wiersza poleceń Gemini, instalując kilka rozszerzeń, które przydadzą się później w tym module.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Zabezpieczenia interfejsu wiersza poleceń Gemini
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Cloud SQL dla PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Jeśli wszystkie te polecenia zadziałały, możesz oficjalnie przystąpić do warsztatów. Środowisko zostało skonfigurowane i możesz już zacząć zwiększać swoją produktywność. Do zobaczenia w pierwszym module.
3. Podstawowe pojęcia i interakcja z lokalnym obszarem roboczym

OK, chcesz się pobawić? Teraz przyjrzymy się narzędziom, które znajdziesz w nowym zestawie narzędzi Gemini. Traktuję je jako moje supermoce, które pomagają mi odkrywać i budować w chmurze. Przyjrzyjmy się bliżej, jak działają.
Najważniejsze funkcje
Dzielę swoje moce na 2 grupy: widzenie tego, co jest na zewnątrz, i wykonywanie różnych czynności.
Zapoznanie ze środowiskiem (moje superzmysły!)
Zanim zaczniesz budować nowe gniazdo, musisz sprawdzić drzewo, prawda? Te narzędzia pomogą Ci się zorientować w sytuacji.
list_directory: to moje podstawowe narzędzie do „węszenia”. Jest to prosta otoczka standardowego listowania katalogów na poziomie systemu operacyjnego. Najciekawsze jest jednak to, że model może analizować te dane strukturalne, aby podejmować decyzje, np. wybrać eksplorowanie podkatalogu o nazwiesrc.glob: To mój „wyszukiwacz żołędzi”! Używa standardowych wzorców globalnych, takich jak*,**,?i[], które znasz już z takich narzędzi jak.gitignore. Możesz więc zadać pytanie „Znajdź wszystkie pliki*.pyw kataloguapp”, używając wzorcaapp/**/*.py. To skuteczny sposób na zebranie określonego zestawu plików do analizy przez model.search_file_content: To jest mój wzrok rentgenowski! Do wyszukiwania używa pełnych wyrażeń regularnych (regex), a nie tylko prostego dopasowywania ciągów znaków. To niezwykle przydatne. Możesz poprosić go o znalezienie złożonych wzorców, np. „Znajdź wszystkie trasy Flask, które używają metody POST”. Może to wygenerować wyrażenie regularne, takie jakapp\.route\(.*methods=\['POST'\].*\). Zwraca ścieżkę pliku, numer wiersza i pasujący wiersz, co zapewnia modelowi cały potrzebny kontekst.read_file: Gdy znajdziesz interesujący Cię plik, możesz go otworzyć.read_filejest zoptymalizowany pod tym kątem. Możesz odczytać cały plik lub, w przypadku dużych plików, użyć parametrówoffsetilimit, aby odczytać go w częściach. Oznacza to, że model może skutecznie skanować nawet bardzo duże pliki dziennika bez przekroczenia limitu czasu.
Od zrozumienia do działania (czas na budowanie!)
OK, znasz już teren. Teraz czas zbudować gniazdo. Te narzędzia umożliwiają wprowadzanie zmian i wykonywanie różnych czynności.
**write_file**: chcesz utworzyć nowy plik od podstaw?write_fileto operacja niepodzielna, która zapisuje pełną treść podaną przez Ciebie w określonej ścieżce. To idealne rozwiązanie do tworzenia nowych modułów lub tworzeniaDockerfileod zera na podstawie potrzeb projektu.**replace**: to narzędzie służy do wprowadzania zmian chirurgicznych. To nie jest zwykłe znajdowanie i zastępowanie. Podajeszold_stringinew_string. Aby to działało bezpiecznie,old_stringmusi być unikalnym fragmentem pliku, zwykle z kilkoma wierszami kontekstu przed i po zmienianej części. Dzięki temu zmienimy tylko exact tę część kodu, którą chcesz zmienić.**run_shell_command**: to najlepsze ulepszenie! Wykonuje podane polecenie wbash -c <command>podpowłoce. Model zwracastdout,stderriexit code. Jest to kluczowe w przypadku tworzenia przepływów pracy. Model może uruchomićterraform plan, odczytać wynik i jeśli plan się powiedzie (kod wyjścia 0), zapytać, czy ma go zastosować.
Gwarancja bezpieczeństwa (moja obietnica)
Uruchamianie poleceń może być przerażające. Rozumiem. Dlatego tak ważna jest siatka bezpieczeństwa. Gdy model wygeneruje blok tool_code zawierający wywołanie funkcji run_shell_command lub write_file, klient interfejsu wiersza poleceń Gemini przechwyci go. Wyświetla dokładne polecenie lub pełną zawartość pliku do zapisu i wyświetla prompt [y/n]. Bez Twojej wyraźnej zgody nic się nie stanie. Zawsze masz nad wszystkim kontrolę.
4. Przeglądanie projektu

Cel: używanie interfejsu wiersza poleceń Gemini do zrozumienia nieznanego kodu bez opuszczania terminala.
Scenariusz: jesteś nowym programistą i musisz szybko zapoznać się z tym projektem.
Zadanie 0. Konfiguracja – sklonuj projekt
Najpierw musimy zdobyć kod. Jest on ukryty w publicznym repozytorium w usłudze GitHub w „drzewie” o nazwie quickpoll. Poprośmy interfejs wiersza poleceń Gemini o sklonowanie go. Zanim to zrobimy, utwórzmy katalog roboczy i uruchommy interfejs wiersza poleceń Gemini w tym katalogu:
mkdir workdir
cd workdir
gemini
Teraz wpisz ten prompt:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini zrozumie, że „klonowanie” oznacza użycie polecenia git clone. Wygeneruje wywołanie narzędzia run_shell_command z informacjami podobnymi do git clone https://github.com/gauravkakad-google/quickpoll.git. Po zatwierdzeniu pobierze repozytorium.
Teraz zamknijmy interfejs wiersza poleceń Gemini, naciskając dwukrotnie ctrl+c, przejdźmy do przykładowego repozytorium i ponownie uruchommy interfejs wiersza poleceń Gemini:
cd quickpoll
gemini
Świetnie. Teraz, gdy jesteśmy w drzewie projektu, możemy zacząć go przeglądać.
Zadanie 1. Wyświetlanie listy wszystkich plików w projekcie
Teraz, gdy już tu jesteśmy, zmapujmy cały las. Chcemy zobaczyć każdy plik. Zapytaj Gemini:
List all the files in the project.
Gemini prawdopodobnie użyje narzędzia glob ze wzorcem **/*. Spowoduje to rekurencyjne wyświetlenie listy wszystkich plików, co da Ci pełny manifest bazy kodu. To świetny pierwszy krok do zrozumienia struktury projektu.
Zadanie 2. Znajdź wszystkie pliki, które importują „google.cloud.sql.connector”
OK, jestem ciekawy. Gdzie ten projekt komunikuje się z Google Cloud Storage? Zacznijmy od detektywistycznej roboty. Zapytaj:
Find all files that import the 'google.cloud.sql.connector' library.

Dzięki swojej search_file_content mocy Gemini znajdzie dokładne pliki, które zawierają tę instrukcję importu. Dzięki temu od razu skupisz się na częściach kodu, które obsługują interakcję z Cloud SQL. W tym projekcie powinna znaleźć backend/main.py.
Zadanie 3. Pokaż mi zawartość głównego pliku Dockerfile
Widzę Dockerfile. To jest plan naszego kontenera. Zajrzyjmy do środka. Wystarczy zapytać:
Show me the contents of the main Dockerfile.

Gemini będzie używać read_file do wyświetlania Dockerfile. Możesz przeanalizować obraz bazowy (FROM), instalowane zależności (RUN pip install...) i polecenie końcowe (CMD). Dzięki temu dowiesz się więcej o środowisku wykonawczym aplikacji.
Zadanie 4. Jaki jest cel pliku main.py?
Czas przyjrzeć się sednu kodu. Poprośmy Gemini o pomoc. Powiedz:
What's the purpose of the `main.py` file?

W tym przypadku interfejs wiersza poleceń Gemini jest niezastąpiony. Najpierw zadzwonimy pod numer read_file w dniu backend/main.py. Następnie multimodalny model językowy przeanalizuje kod w Pythonie. Określi, że jest to aplikacja FastAPI, która udostępnia interfejs API REST dla aplikacji do głosowania. Następnie wyjaśnimy punkty końcowe interfejsu API i ich funkcje. Dzięki temu nie musisz samodzielnie czytać i rozszyfrowywać wszystkich informacji. Możesz też zadawać dodatkowe pytania, aby uzyskać szczegółowe wyjaśnienia niektórych funkcji. Fajnie, co? Śmiało, wypróbuj!
5. Od lokalnych do transmisji na żywo Wdrażanie za pomocą Cloud Run i Cloud SQL

Dobrze, odkrywco chmury, znasz już ten teren. Teraz możesz zbudować własny domek na drzewie w chmurze. Weźmiemy naszą aplikację do szybkiego głosowania i przekształcimy ją w prawdziwą aplikację internetową, z której będzie mógł korzystać każdy.
Cel: wdrożenie aplikacji quickpoll w Cloud Run z backendem Cloud SQL dla PostgreSQL.
Zadanie 1. Solidna gałąź dla naszych danych (konfigurowanie Cloud SQL)
Każda dobra aplikacja potrzebuje miejsca do przechowywania cennych żołędzi… To znaczy dane. Użyjemy Cloud SQL for PostgreSQL. To jak magiczny, samopielęgnujący się ogród dla naszej bazy danych, dzięki czemu możemy skupić się na przyjemniejszych rzeczach.
Poprośmy interfejs wiersza poleceń Gemini o zasianie ziarna naszej bazy danych.
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!.

Interfejs wiersza poleceń Gemini z rozszerzeniem Cloud SQL rozpocznie działanie. Wyświetli wywołanie narzędzia create_instance. Zatwierdź je.
Po utworzeniu instancji powinny pojawić się dane wyjściowe podobne do tych:

Możesz utworzyć plik .env z powyższą zmienną środowiskową i użyć go przed ponownym uruchomieniem interfejsu Gemini CLI, aby miał dostęp do tych zmiennych.
Podczas gdy nasza instancja rośnie, przygotujmy glebę. Potrzebujemy bazy danych i użytkownika dla naszej aplikacji.
In the quickpoll-db instance, create a new database named quickpolldb.
Interfejs wiersza poleceń Gemini użyje narzędzia create_database w rozszerzeniu Cloud SQL for PostgreSQL, aby utworzyć bazę danych.

Teraz dodajmy użytkownika, który będzie się nim zajmował:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
Tym razem interfejs wiersza poleceń Gemini użyje narzędzia create_user.

Zadanie 2. Ścieżka obiektu tajnego (łączenie backendu)
Nasz backend musi znać tajną ścieżkę do naszej nowej bazy danych. Otwórzmy plik backend/main.py, aby zobaczyć, jak to działa.
show me how would the backend/main.py connect to the database

Aha! Widzisz? Korzysta z oprogramowania sprzęgającego Cloud SQL Python Connector i szuka zmiennych środowiskowych, takich jak CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD i CLOUD_SQL_POSTGRES_DATABASE. Musimy przekazać je do usługi Cloud Run.
Najpierw potrzebujemy CLOUD_SQL_POSTGRES_INSTANCE. To jak tajne powitanie.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

Zobaczysz wiele szczegółów. Znajdź nazwę połączenia i skopiuj tę wartość. Będzie wyglądać mniej więcej tak: your-project-id:us-central1:quickpoll-db.
Zanim wdrożymy aplikację w Cloud Run, utwórzmy w bazie danych wymagane tabele. Po utworzeniu osobnej bazy danych i użytkownika zamknijmy interfejs Gemini CLI i zaktualizujmy utworzony wcześniej plik .env o nowe wartości:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Teraz ponownie uruchom interfejs wiersza poleceń Gemini i wpisz to polecenie:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

Automatycznie wykrył, że narzędzie execute_sql nie obsługuje wykonywania wielu poleceń SQL w jednym wywołaniu. Dlatego wykonał każde polecenie SQL osobno.
Zadanie 3. Backend, Take Flight! (Wdrażanie w Cloud Run)
Czas, aby nasz backend opuścił gniazdo! Powiedzemy Gemini, aby wdrożył folder backendu w Cloud Run i podał tajną ścieżkę do bazy danych.
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 spakuje Twój kod, utworzy obraz kontenera i wdroży go w Cloud Run. Po zakończeniu tego procesu, który może potrwać kilka minut, otrzymasz adres URL nowej usługi backendu. Miej ten adres URL pod ręką.

Zadanie 4. Ostatnie poprawki (konfigurowanie i wdrażanie frontendu)
Frontend to przyjazny interfejs naszej aplikacji. Musi wiedzieć, gdzie znaleźć backend. Powiedzmy mu, dokąd ma się udać.
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

Zadanie 5. Wielkie otwarcie!
To jest to! Chwila prawdy! Skopiuj adres URL usługi quickpoll-fe i otwórz go w przeglądarce.
Powinna pojawić się aplikacja QuickPoll, która jest aktywna i gotowa do działania. Utwórz ankietę, oddaj głos i sprawdzaj wyniki w czasie rzeczywistym.
Udało się! Przeniesiono projekt z komputera lokalnego do Google Cloud. A wszystko to zrobisz wygodnie z poziomu terminala, korzystając z pomocy niezawodnego interfejsu wiersza poleceń Gemini.
To się nazywa produktywność!
6. Dla deweloperów – przyspieszenie cyklu tworzenia

Deweloperzy, teraz zaczyna się prawdziwa zabawa. Poznaliśmy już projekt, ale teraz czas na budowanie. Pokażę Ci, jak Gemini może być Twoim najlepszym partnerem w programowaniu, pomagając Ci szybciej niż wiewiórka znaleźć orzech przejść od prostego pomysłu do kodu gotowego do wdrożenia.
Od pomysłu do kodu
Pomyśl o typowym cyklu rozwoju. To nie tylko pisanie kodu, prawda? Obejmuje to tworzenie szkieletu, dodawanie obsługi błędów, refaktoryzację i pisanie testów. Gemini może Ci w tym pomóc.
Szablony i powtarzalne zadania: koniec z kopiowaniem i wklejaniem!
Masz już podstawową funkcjonalność aplikacji. Teraz musisz dodać logowanie i obsługę potencjalnych błędów, prawda? Zwykle jest to wiele powtarzających się bloków try...except. Już nie. Zacznijmy od poproszenia interfejsu wiersza poleceń Gemini o analizę kodu i sugerowanie sprawdzonych metod logowania błędów i obsługi wyjątków:
What are the best practices for error handling and logging that should also be included in this application?

Wiersz poleceń Gemini przeanalizuje istniejący plik i przedstawi rekomendacje dotyczące sprawdzonych metod. Potraktuj ją jako asystenta eksperta, który może zaoszczędzić Ci czas potrzebny na samodzielne wyszukiwanie tych informacji.
Teraz poproś go o wdrożenie tych rekomendacji:
please go ahead and implement these in the existing app
W Twoim przypadku dane wyjściowe mogą się różnić, ale ostatecznie powinny zawierać szczegóły wprowadzonych zmian. Na przykład na zrzucie ekranu poniżej widać, że dodano structlog, aby generować dzienniki w formacie JSON, wdrożono scentralizowaną obsługę wyjątków i ulepszono sposób rejestrowania odpowiedzi na żądania. Pomyśl, ile pisania właśnie sobie zaoszczędziłeś(-aś)!

Refaktoryzacja: Twój osobisty weryfikator kodu
Wszyscy chcemy pisać przejrzysty i wydajny kod. Czasami jednak się spieszymy. Gemini może pełnić rolę osobistego weryfikatora kodu. Możesz na przykład zapytać:
please perform a comprehensive code review for best practices and security


Gemini rozumie sprawdzone metody dotyczące poszczególnych języków. Rzeczywiste dane wyjściowe w Twoim przypadku mogą się różnić od tych na zrzutach ekranu powyżej, ale jeśli je przeczytasz, docenisz poziom szczegółowości, z jakim interfejs Gemini CLI analizuje kod. Pomaga Ci to uczyć się i ulepszać kod.
Generowanie testu: najlepsza część!
To moja ulubiona sztuczka! Wszyscy wiemy, że powinniśmy pisać testy, ale może to być żmudne, zwłaszcza gdy trzeba tworzyć atrapy. W takim razie oglądajmy. Możesz po prostu zapytać:
Add a test suite to this application



Gemini przeanalizuje funkcję, zidentyfikuje jej dane wejściowe i wyjściowe oraz określi jej zależności. Następnie wygeneruje kompletny plik test_main.py z kilkoma przypadkami testowymi, w tym „happy path” i być może warunkiem błędu. To ogromny wzrost produktywności.
Przeprowadź testy! (Zadanie dla Ciebie)
Teraz zaczyna się prawdziwa zabawa. Pozostawię tę część jako wyzwanie, które możesz zbadać samodzielnie. Możesz poprosić interfejs wiersza poleceń Gemini o wykonanie wygenerowanych przypadków testowych. Potem usiądź wygodnie i obserwuj, jak magia się rozwija.
7. Poza localhostem: integracja z GitHubem

Wykonaliśmy niesamowitą pracę na naszym komputerze lokalnym, w naszym małym zakątku lasu. Prawdziwa siła chmury tkwi jednak we współpracy i łączności. Czas wzbić się w powietrze i sprawdzić, jak Gemini może wchodzić w interakcje z szerszym światem, zaczynając od największego drzewa w deweloperskim lesie: GitHuba.
Koncepcja: zintegrowany asystent DevOps
Do tej pory Gemini był dla nas lokalnym asystentem programowania. Teraz przekształcimy go w pełnoprawnego zintegrowanego asystenta DevOps. Jest to możliwe dzięki integracji z protokołem kontekstu modelu (MCP). To skomplikowana nazwa, ale oznacza po prostu, że Gemini może bezpiecznie komunikować się z innymi usługami w Twoim imieniu. Pierwszą usługą, którą opanujemy, będzie GitHub.
Zastanów się. Jak często musisz opuszczać terminal, aby sprawdzić żądanie pull, utworzyć zgłoszenie lub przejrzeć repozytorium na GitHubie? To więcej przełączania kontekstu. Za pomocą zestawu narzędzi github możesz to wszystko zrobić w tym miejscu. Dzięki temu Gemini staje się natywnym interfejsem GitHuba.
Oficjalna dokumentacja serwera MCP na GitHubie zawiera wiele wskazówek dotyczących udostępnionych narzędzi i opcji konfiguracji. Możesz wybrać działanie lokalne lub zdalne, ponieważ interfejs Gemini CLI w pełni obsługuje oba zdalne serwery MCP.
W tym samouczku dowiesz się, jak skonfigurować opcję zdalnego serwera MCP dla GitHub. Najpierw musisz uzyskać osobisty token dostępu (PAT) z GitHuba.
Gdy uzyskasz PAT, dodaj obiekt serwera MCP do pliku settings.json. Poniżej znajdziesz pełną wersję pliku settings.json, ale możesz po prostu sprawdzić, czy obiekt mcpServers jest zgodny z tym, co widzisz tutaj:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
Po zaktualizowaniu pliku settings.json o konfigurację serwera GitHub MCP wystarczy ponownie uruchomić wiersz poleceń Gemini lub wykonać polecenie /mcp refresh. Zrzut ekranu poniżej pokazuje serwer MCP GitHub, który jest już gotowy w moim systemie. Widać na nim szereg zaawansowanych narzędzi, z których interfejs wiersza poleceń Gemini może teraz korzystać dzięki protokołowi kontekstu modelu.

Prezentacja najważniejszych poleceń
Gemini ma zupełnie nowy zestaw supermocy, które przydadzą Ci się w GitHubie. Oto kilka moich ulubionych:
github.list_repositories: Chcesz zobaczyć wszystkie repozytoria w swojej organizacji bez otwierania przeglądarki? To Twoje narzędzie. Wystarczy, że zapytasz „List all the repositories in my org” (Wyświetl wszystkie repozytoria w mojej organizacji).github.create_issueWidzisz błąd? Nie musisz przełączać okien, aby utworzyć zgłoszenie. Możesz po prostu powiedzieć Gemini: „Utwórz w repozytoriumsample-flask-appproblem o nazwie „Napraw błąd logowania” z tym opisem…” i voilà, problem zostanie utworzony.github.get_pull_request: Chcesz sprawdzić informację prasową? Możesz zapytać: „Pokaż mi szczegóły zgłoszenia nr 42 w repozytoriumsample-flask-app”. Gemini pobierze tytuł, opis, stan i informacje o recenzentach.github.get_file_contents: Ten jest super. Możesz odczytać plik ze zdalnego repozytorium bez konieczności jego klonowania. To świetne rozwiązanie, gdy chcesz szybko sprawdzić plik konfiguracyjny lub plik README projektu, którego nie masz lokalnie.
8. Eksploracja GitHub

Dość gadania, lećmy! Wykorzystamy nowe możliwości GitHuba, aby zbadać organizację i projekt, a wszystko to zrobimy w terminalu.
Cel: używanie Gemini do eksplorowania i poznawania projektu hostowanego w GitHubie.
Scenariusz: musisz zapoznać się z projektem na GitHubie, nad którym wcześniej nie pracowałeś(-aś).
Zadanie 1. Wyświetlanie listy repozytoriów w organizacji
Najpierw wyświetlmy wszystkie projekty w organizacji GitHub. W tym module możesz użyć swojej nazwy użytkownika GitHub lub organizacji, do której należysz. Poprośmy Gemini o ich wymienienie.
List the repositories in the `[your-org-or-username]` GitHub organization.
(Pamiętaj, aby zastąpić [your-org-or-username] swoimi danymi). Gemini użyje narzędzia github.list_repositories i wyświetli listę wszystkich projektów. Świetnie!
Zadanie 2. Znajdowanie konkretnego repozytorium
OK. Zobaczysz listę repozytoriów. Teraz, tak jak prawdziwy deweloper, musisz przejrzeć tę listę i znaleźć projekt, który Cię interesuje. Na potrzeby tego modułu załóżmy, że szukamy repozytorium quickpoll, które sklonowaliśmy wcześniej. W tym przypadku nie musisz używać polecenia – wystarczy, że przeczytasz dane wyjściowe z ostatniego kroku i znajdziesz repozytorium.
Zadanie 3. Wyświetlanie listy otwartych żądań pull
Zidentyfikowaliśmy już repozytorium docelowe, więc sprawdźmy, co się z nim dzieje. Czy są jakieś otwarte żądania pull? Zapytajmy:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini użyje narzędzia github.list_pull_requests, filtrując wyniki według stanu open. Następnie wyświetli listę otwartych żądań pull request, podając ich numery, tytuły i autorów. To szybki podgląd aktywnego rozwoju projektu. Możesz to sprawdzić w przypadku repozytorium, w którego rozwój aktywnie się angażujesz, i sprawdzić wyniki.

Zadanie 4. Sprawdź żądanie pull
Załóżmy, że na tej liście znajduje się interesujące zgłoszenie. Chcemy dowiedzieć się więcej! Chcemy zobaczyć opis i informacje o zmienionych plikach. Wybierz numer PR z listy (jeśli nie ma żadnego, możesz pominąć ten krok, ale załóżmy, że jest).
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
To świetny przykład wieloetapowego zadania dla Gemini. Najpierw prawdopodobnie użyje narzędzia github.get_pull_request, aby pobrać główne szczegóły, takie jak tytuł, treść, autor itp. Następnie, aby uzyskać zmiany w pliku, użyje drugiego narzędzia – github.get_pull_request_files. Następnie połączy wszystkie te informacje w przejrzyste podsumowanie. Właśnie sprawdzono prośbę o scalenie bez opuszczania terminala. Niesamowite, prawda?
9. Od dokumentu PRD do pierwszego zatwierdzenia

Poznałeś już sposoby odkrywania, tworzenia i testowania. Teraz połączymy to wszystko w scenariuszu z życia. Wtedy przekształcamy plan w usługę. Przejdziemy od dokumentu z wymaganiami dotyczącymi produktu (PRD) do pierwszego zatwierdzenia. Zróbmy coś niesamowitego!
Cel: symulacja rzeczywistego zadania programistycznego od początku do końca z uwzględnieniem kontekstu lokalnego i zdalnego.
Scenariusz: przypisano Ci nową funkcję. Wymagania znajdziesz w pliku PRD w repozytorium GitHub projektu.
Zadanie 1. Zrozumienie – przeczytaj dokument PRD
To najważniejszy krok. Zanim zaczniesz pisać choćby jedną linijkę kodu, musisz dobrze zrozumieć plan. Wymagania dotyczące naszej nowej funkcji znajdują się w pliku prd/NEW_FEATURE.md. Otwórzmy go i zobaczmy, co jest w środku.
explain the requirements mentioned in prd/NEW_FEATURE.md
Interfejs Gemini CLI użyje funkcji read_file, aby wyświetlić zawartość dokumentu PRD. Zaczynamy! Opisuje nową funkcję: przycisk Odśwież, który umożliwia użytkownikom ręczne aktualizowanie listy aktywnych ankiet. Zawsze najpierw zapoznaj się z planem.

Zadanie 2. Kod – przełóż wymagania na rzeczywistość
To magiczna chwila! Weźmiemy wymagania z dokumentu PRD i poprosimy Gemini o napisanie kodu. Bądźmy konkretni i powiedzmy mu dokładnie, czego chcemy.
Implement the changes as per the PRD
Interfejs Gemini CLI zacznie działać i po chwili zobaczysz dane wyjściowe podobne do tych. Nasz nowy kod ma teraz przytulne miejsce.

Zadanie 3. Weryfikowanie zmian
Utworzyliśmy nowy plik z nowym kodem. Ostatnim krokiem w tym module jest wdrożenie zmiany w Cloud Run i weryfikacja.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
Zwróć uwagę, że prompt zawiera dodatkowe informacje, takie jak nazwa istniejącej usługi Cloud Run i region jej wdrożenia. Podanie szczegółowych informacji pozwala zaoszczędzić czas, ale interfejs wiersza poleceń Gemini zawsze poprosi Cię o podanie brakujących szczegółów, jeśli je pominiesz.
Jeśli zaktualizowana usługa Cloud Run napotka błąd, po prostu poproś interfejs Gemini CLI o debugowanie i poprawienie kodu. Pamiętaj, że to Twój supermocny towarzysz!
10. Gratulacje

To wszystko. Właśnie zakończono pełny cykl rozwoju. Przekształciłeś dokument z wymaganiami w nową funkcję, która jest gotowa do zatwierdzenia i przesłania. Połączono kontekst lokalny, kontekst zdalny, operacje na systemie plików i generowanie kodu. Nie jesteś tylko programistą, ale superwydajnym architektem chmury. Gratulacje!