Ausführliches Video zu Gemini CLI

1. Einführung

be8ebdfe42ca39ac.png

Hallo, Ich heiße Bello! Schön, dass du dabei bist. Ich bin mit dem Reißverschluss von einem GKE-Cluster in us-central1 hierher gekommen. Willkommen zu diesem Codelab.

Ich habe mein ganzes Leben damit verbracht, durch die Datenströme von Google Cloud zu huschen, und ich habe schon alles gesehen. Ich habe gesehen, wie Sie, die Architekten und Ingenieure, erstaunliche Dinge geschaffen haben. Aber ich habe dich auch schon in den Brombeeren stecken gesehen. Du weißt, was ich meine! Das Gefühl des Kontextwechsels beim Debuggen eines Pods in GKE. Sie wechseln zwischen kubectl logs, der GCP Console, um den Status des Knotens zu prüfen, Ihrer IDE, um den bereitgestellten Quellcode anzusehen, und einem Browser-Tab mit der offiziellen Kubernetes-Dokumentation zu Pod-Lifecycle-Hooks. Jeder Sprung ist eine Unterbrechung des Fokus.

Und die komplexen Tools! gcloud, kubectl, terraform … mit jeweils eigener DSL und einer Menge Flags. Das führt zu einer ständigen Suche nach Dokumentation. Sie suchen dann nach dem einen perfekten gcloud-Befehl mit der richtigen Kombination aus --filter- und --format-Flags, um die benötigten Daten zu erhalten. Es ist, als würde man versuchen, eine bestimmte Nuss in einem Wald mit Millionen von Nüssen zu finden. Und fang bloß nicht mit den sich wiederholenden Aufgaben an. Ich habe gesehen, dass du die gleichen Dockerfile- und cloudbuild.yaml-Befehle für einen neuen Python-Dienst so oft geschrieben hast, dass der Code wahrscheinlich ein Déjà-vu hat.

Ich möchte Ihnen eine bessere Lösung zeigen. Ein geheimer Pfad durch den Wald. Genau darum geht es bei der Gemini CLI.

Was ist die Gemini CLI?

Was ist also diese magische Tastenkombination, die mich so begeistert?

Gemini CLI ist wie ein persönlicher Cloud-Begleiter direkt in Ihrem Terminal. Es ist ein Gespräch, eine Partnerschaft! Es ist kontextbezogen. Das bedeutet, dass es nicht nur zuhört, sondern auch versteht. Es kann Ihre Dateien lesen, die Konventionen Ihres Projekts lernen, z. B. ob Sie Tabulatoren oder Leerzeichen verwenden, und herausfinden, was Sie tun möchten. Es ist, als könnte ich die Eicheln riechen, die Sie sammeln möchten.

Gesamtarchitektur (Blick hinter die Kulissen)

Wie funktioniert das alles? Das ist eine Mischung aus einigen coolen Dingen, die harmonisch zusammenwirken:

  1. Leistungsstarkes Sprachmodell:Das ist das Gehirn! Es handelt sich um ein großes, multimodales Modell, das von Google trainiert wurde. Multimodal bedeutet, dass das Modell nicht nur Text, sondern auch die Struktur und Bedeutung von Code versteht. So kann Gemini über Ihre Software nachdenken, anstatt sie nur zu lesen.
  2. Ihr lokaler Kontext:Das ist entscheidend. Die Gemini CLI wird als Prozess auf Ihrem lokalen Computer mit denselben Berechtigungen wie Ihr Nutzerkonto ausgeführt. Das bedeutet, dass es auf Ihr Dateisystem zugreifen kann, um projektspezifische Hilfe zu leisten. Es handelt sich nicht um einen weit entfernten Cloud-Dienst, der Ihren Code errät, sondern um eine Funktion, die direkt auf Ihrem Gerät ausgeführt wird.
  3. Tooling-Ökosystem:So interagiert das Modell mit der Welt. Es verfügt über einen genau definierten Satz von Funktionen, die es aufrufen kann, z. B. read_file oder run_shell_command. Stellen Sie sich das wie eine sichere API vor. Das Modell entscheidet, was zu tun ist und welches Tool verwendet werden soll. Anschließend wird ein tool_code-Block generiert, um die Aktion auszuführen. Dadurch sind die Aktionen vorhersehbar und zuverlässig.
  4. Ausführung von Shell-Befehlen:Das ist das eigentliche Highlight! Damit kann jeder Befehl in einer bash -c <command>-Subshell ausgeführt werden. Sie erfasst die stdout, die stderr und die exit code. Das ist ein enormer Anstieg. Das bedeutet, dass die Gemini-Befehlszeile einen Befehl ausführen, prüfen kann, ob er fehlgeschlagen ist, und dann versuchen kann, ihn anhand der Fehlermeldung zu korrigieren.
  5. Das Sicherheitsnetz:Das ist mein Lieblingsteil! Bevor der tool_code-Block ausgeführt wird, zeigt der CLI-Client Ihnen den exact Befehl oder Code an und bittet Sie um Bestätigung. Da es sich um eine clientseitige Prüfung handelt, haben Sie das letzte Wort, bevor etwas auf Ihr System zugreift. Sie haben immer die Kontrolle.

Es ist nicht nur ein Chatbot, sondern ein Tool, das Aufgaben für Sie erledigt. Ein aktiver Helfer bei Ihren Programmierprojekten.

Das Schlüsselkonzept: deklarativ vs. imperativ

Die größte und wichtigste Änderung ist, dass Sie dem Computer nicht mehr sagen müssen, wie er etwas tun soll, sondern was Sie möchten.

  • Imperativ (der alte, dornige Weg): Sie müssen jeden einzelnen Schritt angeben. Sie müssen ein Experte für die spezifische Domänensprache des Tools sein. Zum Beispiel so:
    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
    
    
    Oh je! Sieh dir das an! Sie müssen die Syntax für Maschinentyp, Imagefamilie, Metadaten und Tags kennen. Wenn Sie einen Teil vergessen, erhalten Sie eine kryptische Fehlermeldung.
  • Deklarativ (die Sparky-Abkürzung): Sie müssen nur in einfachem Deutsch sagen, was Sie möchten.

Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.

Geschafft! Gemini analysiert Ihre Anfrage, ordnet sie den Parametern des Tools gcloud zu, ermittelt die richtige Syntax für jedes Flag und erstellt den entsprechenden Befehl für Sie. Sie wird Ihnen dann zur Genehmigung präsentiert. Sie sollen sich auf das große Ganze konzentrieren können und nicht auf das Auswendiglernen von Befehlszeilen-Flags.

Die Leistungsfähigkeit von Gemini erweitern: Einführung in CLI-Erweiterungen

Die Gemini CLI ist zwar schon von Haus aus ein leistungsstarkes Tool, ihr volles Potenzial wird aber erst durch Erweiterungen ausgeschöpft. Erweiterungen sind Bündel von Prompts, Tools und benutzerdefinierten Befehlen, die die Funktionalität der CLI verbessern und es Ihnen ermöglichen, sie an Ihre spezifischen Anforderungen und Workflows anzupassen.

Erweiterungen finden und installieren

Für die Gemini CLI gibt es ein wachsendes Ökosystem von Erweiterungen, die sowohl von Google als auch von Drittanbietern entwickelt werden. Das offizielle Verzeichnis der Erweiterungen finden Sie unter geminicli.com/extensions.

Um eine Erweiterung zu installieren, können Sie den Befehl „gemini extensions install“ mit der URL des Git-Repositorys der Erweiterung verwenden. Wenn Sie beispielsweise die offizielle Cloud SQL for PostgreSQL-Erweiterung installieren möchten, führen Sie folgenden Befehl aus:

gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql

Okay, genug geredet! Lass uns die Pfoten schmutzig machen und es ausprobieren!

2. Hinweis

86dffda616ab7a1d.png

Hallo zukünftige Cloud-Experten! Sparky ist für Sie da. Bevor wir mit unserem großen Abenteuer beginnen können, müssen wir dafür sorgen, dass deine Workshop-Umgebung bereit ist. Das ist so, als würden wir unsere Taschen mit allen richtigen Werkzeugen und magischen Eicheln packen, bevor wir in den Wald gehen. Folge mir!

Wenn Sie bereits ein Google Cloud-Projekt haben, können Sie die Gemini-CLI in Google Cloud Shell verwenden, da sie dort vorinstalliert ist. Alternativ können Sie die folgenden Schritte ausführen, um die Funktion auf Ihrem lokalen Computer einzurichten.

Schritt 1: Das Wichtigste (Voraussetzungen)

Jeder gute Abenteurer braucht eine solide Grundlage. Bevor wir die Gemini CLI installieren können, müssen einige Dinge auf Ihrem lokalen Computer eingerichtet sein.

  1. Google Cloud SDK (gcloud): Dies ist das Haupt-Toolkit für Google Cloud. Die Gemini CLI ist Teil dieser Familie.
  • Prüfen, ob es installiert ist: Führen Sie gcloud --version aus. Wenn eine Versionsnummer angezeigt wird, ist alles in Ordnung.
  • Falls nicht installiert: Folgen Sie der offiziellen Anleitung unter cloud.google.com/sdk/docs/install.
  1. Git: Wir benötigen Git, um das Repository für das praktische Lab zu klonen.
  • Prüfen, ob es installiert ist: Führen Sie git --version aus.
  • Falls nicht installiert: Sie können es unter git-scm.com/downloads herunterladen.
  1. GCP-Projekt und Authentifizierung:
  • Sie benötigen ein Google Cloud-Projekt mit aktivierter Abrechnung. Das ist sehr wichtig.
  • Melden Sie sich in Ihrem Google-Konto an, indem Sie Folgendes ausführen:
gcloud auth login
  • Legen Sie Ihr Projekt für die Sitzung fest. Suchen Sie in der GCP Console nach Ihrer Projekt-ID und führen Sie folgenden Befehl aus:
gcloud config set project YOUR_PROJECT_ID

Ersetzen Sie YOUR_PROJECT_ID durch Ihre tatsächliche Projekt-ID.

  1. Node.js-Version 20 oder höher

Schritt 2: Magic nutzen (Gemini CLI installieren)

Nachdem wir die Grundlagen geklärt haben, ist es Zeit für das Hauptereignis. Wir installieren die Gemini CLI.

Sofort mit npx ausführen

# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli

Global mit npm installieren

npm install -g @google/gemini-cli

Global mit Homebrew installieren (macOS/Linux)

brew install gemini-cli

Gemini-Version prüfen

gemini --version

Sie sollten eine Versionsnummer sehen. Das bestätigt, dass die Installation erfolgreich war.

Schritt 3: Einschalten (Konfiguration)

Nachdem die Gemini CLI installiert ist, müssen wir ihr die Schlüssel zum Königreich geben. Starten Sie sie zuerst, indem Sie den Befehl gemini im Terminal ausführen. Sie sollten diesen Bildschirm sehen:

9378d804bc647191.png

Zur Vereinfachung können Sie sich mit Ihrem Google-Konto authentifizieren. So erhalten Sie Zugriff auf Gemini 2.5 Pro mit einem Kontextfenster von 1 Million Tokens und bis zu 60 Anfragen pro Minute und 1.000 Anfragen pro Tag, ohne einen API-Schlüssel verwalten zu müssen.

Wenn Sie Zugriff auf bestimmte Gemini-Modelle benötigen oder bei Bedarf ein Upgrade auf höhere Limits durchführen möchten, verwenden Sie den Gemini API-Schlüssel als Authentifizierungsmethode.

Für Enterprise-Teams und Produktionsarbeitslasten, die bereits ein Google-Projekt und ein Abrechnungskonto eingerichtet haben, bietet Vertex AI erweiterte Sicherheits- und Compliance-Funktionen.

Je nach ausgewählter Option werden Sie aufgefordert, die nächsten Schritte zur Konfiguration der Authentifizierung auszuführen. Weitere Informationen zu diesen Optionen finden Sie in der Dokumentation zur Gemini-Befehlszeile.

Wenn Sie die Vertex AI-Plattform von Google Cloud verwenden möchten, beenden Sie zuerst die Gemini CLI, indem Sie zweimal Strg+C drücken, und legen Sie die erforderlichen Umgebungsvariablen fest.

Unabhängig von der Authentifizierungsmethode müssen Sie in der Regel die folgenden Variablen festlegen: GOOGLE_CLOUD_PROJECT und GOOGLE_CLOUD_LOCATION.

So legen Sie diese Variablen fest:

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

Melden Sie sich jetzt in Google Cloud an:

gcloud auth application-default login

Nachdem Sie sich mit der vorherigen Methode authentifiziert haben, starten Sie Gemini CLI noch einmal, indem Sie den Befehl gemini im Terminal ausführen. Wählen Sie in den Authentifizierungsoptionen Vertex AI aus.

Schritt 4: Der Spark-Test Einrichtung überprüfen

Das ist die Stunde der Wahrheit! Sehen wir uns an, ob alles funktioniert. Führen Sie diese Befehle aus, um sicherzustellen, dass alle LEDs grün leuchten.

  1. Geben Sie den folgenden Prompt ein:
What is my current directory?

Gemini CLI sollte Ihnen Ihr aktuelles Arbeitsverzeichnis mitteilen. Damit werden das Kernsprachmodell und die Shell-Integration getestet.

15a12d7b3fdd2d83.png

  1. GCP-Verbindung testen:
list my gcs buckets

Wenn Sie GCS-Buckets haben, sollten diese aufgelistet werden. Andernfalls wird angezeigt, dass keine vorhanden sind. So wird bestätigt, dass die Verbindung zu Ihrem GCP-Projekt korrekt ist.

Schritt 5: Noch mehr Superkräfte! (Erweiterungen installieren)

Als Nächstes installieren wir einige Erweiterungen, die später im Lab nützlich sein werden, um die Funktionen der Gemini CLI zu verbessern.

Cloud Run

gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp

Sicherheit der Gemini-Befehlszeile

gemini extensions install https://github.com/gemini-cli-extensions/security

gcloud

gemini extensions install https://github.com/gemini-cli-extensions/gcloud

Cloud SQL for PostgreSQL

gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql

Wenn alle diese Befehle funktioniert haben, sind Sie offiziell bereit für den Workshop. Ihre Umgebung ist eingerichtet und Sie können mit der Arbeit beginnen. Wir sehen uns im ersten Lab!

3. Wichtige Konzepte und Interaktion mit dem lokalen Arbeitsbereich

a7bf3a905d8e2638.png

Okay, bist du bereit, dir die Pfoten schmutzig zu machen? Sehen wir uns nun die eigentlichen Tools in Ihrem neuen Gemini-Toolbelt an. Ich betrachte sie als meine Superkräfte für die Erkundung und Entwicklung in der Cloud. Sehen wir uns an, wie sie funktionieren.

Hauptfunktionen

Ich teile meine Fähigkeiten in zwei Kategorien ein: sehen, was es gibt, und dann tatsächlich etwas tun.

Informationen zur Umgebung (Meine Superkräfte!)

Bevor du ein neues Nest baust, musst du dir den Baum ansehen, oder? Mit diesen Tools können Sie sich einen Überblick verschaffen.

  • list_directory: Das ist mein grundlegendes Tool zum „Herumschnüffeln“. Es handelt sich um einen einfachen Wrapper für die Standardverzeichnisauflistung auf Betriebssystemebene. Das Modell kann diese strukturierte Ausgabe jedoch parsen, um Entscheidungen zu treffen, z. B. ein Unterverzeichnis namens src zu durchsuchen.
  • glob: Das ist mein „Eichelfinder“! Es werden Standard-Glob-Muster wie *, **, ? und [] verwendet, die Sie bereits aus .gitignore kennen. Sie können also mit dem Muster app/**/*.py fragen: „Finde alle *.py-Dateien im Verzeichnis app“. So können Sie eine bestimmte Gruppe von Dateien für die Analyse durch das Modell zusammenstellen.
  • search_file_content: Das ist mein Röntgenblick! Für die Suche werden vollständige reguläre Ausdrücke (Regex) verwendet, nicht nur einfache String-Abgleiche. Das ist unglaublich leistungsstark. Sie können Gemini fragen, ob es komplexe Muster finden soll, z. B. „Finde alle Flask-Routen, die eine POST-Methode verwenden“. Daraufhin wird möglicherweise ein regulärer Ausdruck wie app\.route\(.*methods=\['POST'\].*\) generiert. Es werden der Dateipfad, die Zeilennummer und die übereinstimmende Zeile zurückgegeben, sodass das Modell den gesamten erforderlichen Kontext erhält.
  • read_file: Wenn Sie eine interessante Datei gefunden haben, sollten Sie sie öffnen. read_file ist dafür optimiert. Sie können eine ganze Datei lesen oder bei großen Dateien die Parameter offset und limit verwenden, um sie in Blöcken zu lesen. Das Modell kann also auch sehr große Logdateien effizient scannen, ohne dass es zu einem Zeitüberschreitungsfehler kommt.

Vom Verständnis zum Handeln (Zeit zum Entwickeln!)

Okay, du hast das Gelände erkundet. Jetzt ist es an der Zeit, dein Nest zu bauen. Mit diesen Tools können Sie Änderungen vornehmen und Dinge erledigen.

  • **write_file**: Sie müssen eine neue Datei von Grund auf erstellen? write_file ist ein atomarer Vorgang, bei dem der gesamte von Ihnen angegebene Inhalt in einen bestimmten Pfad geschrieben wird. Sie eignet sich hervorragend, um neue Module zu erstellen oder eine Dockerfile von Grund auf zu erstellen, die auf die Anforderungen Ihres Projekts zugeschnitten ist.
  • **replace**: Dieses Tool ist für chirurgische Änderungen vorgesehen. Es geht nicht nur um einfaches Suchen und Ersetzen. Sie geben eine old_string und ein new_string an. Damit das sicher funktioniert, muss old_string ein eindeutiger Ausschnitt aus der Datei sein, in der Regel mit mehreren Kontextzeilen vor und nach dem Teil, den Sie ändern. So wird sichergestellt, dass nur der exact Codeabschnitt geändert wird, den Sie beabsichtigen.
  • **run_shell_command**: Das ist das ultimative Power-up! Der Befehl wird in einer bash -c <command>-Subshell ausgeführt. Das Modell gibt stdout, stderr und exit code zurück. Das ist entscheidend für die Erstellung von Workflows. Das Modell kann terraform plan ausführen, die Ausgabe lesen und Sie fragen, ob es den Plan anwenden soll, wenn er erfolgreich ist (Exitcode 0).

Das Sicherheitsnetz (Mein Versprechen an Sie!)

Das Ausführen von Befehlen kann beängstigend sein. Ich verstehe. Deshalb ist das Sicherheitsnetz so wichtig. Wenn das Modell einen tool_code-Block mit einem Aufruf von run_shell_command oder write_file generiert, wird er vom Gemini CLI-Client abgefangen. Es wird der genaue Befehl oder der vollständige Inhalt der zu schreibenden Datei angezeigt und Sie werden aufgefordert, mit [y/n] zu bestätigen. Ohne Ihre ausdrückliche Genehmigung passiert nichts. Sie haben immer die Kontrolle.

4. Projekt erkunden

314faf951de66388.png

Ziel:Mit Gemini CLI eine unbekannte Codebasis verstehen, ohne das Terminal zu verlassen.

Szenario:Sie sind ein neuer Entwickler und müssen sich schnell in dieses Projekt einarbeiten.

Aufgabe 0: Einrichtung – Projekt klonen

Zuerst müssen wir den Code abrufen. Es befindet sich in einem öffentlichen Repository auf GitHub in einem „Baum“ namens quickpoll. Bitten wir Gemini CLI, das Repository für uns zu klonen. Bevor wir das tun, erstellen wir ein Arbeitsverzeichnis und starten Gemini CLI aus diesem Verzeichnis:

mkdir workdir
cd workdir
gemini

Geben Sie nun diesen Prompt ein:

clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

46c2feb0d1184db7.png

Gemini versteht, dass mit „klonen“ der Befehl git clone gemeint ist. Dadurch wird ein run_shell_command-Toolaufruf mit etwa git clone https://github.com/gauravkakad-google/quickpoll.git generiert. Sobald Sie die Genehmigung erteilen, wird das Repository für Sie heruntergeladen.

Beenden Sie nun die Gemini CLI, indem Sie zweimal ctrl+c drücken, rufen Sie das Beispiel-Repository auf und starten Sie die Gemini CLI noch einmal:

cd quickpoll
gemini

Sehr gut! Jetzt, da wir uns im Projektbaum befinden, können wir loslegen.

Aufgabe 1: Alle Dateien im Projekt auflisten

Jetzt, da wir drin sind, wollen wir den ganzen Wald kartieren. Wir möchten jede einzelne Datei sehen. Fragen Sie Gemini:

List all the files in the project.

Gemini verwendet wahrscheinlich das Tool glob mit dem Muster **/*. Dadurch wird jede Datei rekursiv aufgelistet, sodass Sie ein vollständiges Manifest des Quellcodes erhalten. Das ist ein guter erster Schritt, um die Struktur des Projekts zu verstehen.

Aufgabe 2: Alle Dateien suchen, in denen „google.cloud.sql.connector“ importiert wird

Okay, ich bin neugierig. Wo kommuniziert dieses Projekt mit Google Cloud Storage? Lassen Sie uns ein wenig detektivische Arbeit leisten. Frage Folgendes:

Find all files that import the 'google.cloud.sql.connector' library.

568fdb8ff4889c5d.png

Mithilfe von search_file_content findet Gemini die genauen Dateien, die diese Importanweisung enthalten. Dadurch wird der Fokus sofort auf die Teile des Codes gerichtet, die die Cloud SQL-Interaktion verarbeiten. In diesem Projekt sollte backend/main.py gefunden werden.

Aufgabe 3: Zeige mir den Inhalt des Haupt-Dockerfiles

Ich sehe ein Dockerfile. Das ist der Bauplan für unseren Container. Sehen wir uns das mal an. Fragen Sie einfach:

Show me the contents of the main Dockerfile.

e49a83b3efbcf807.png

Gemini verwendet read_file, um die Dockerfile anzuzeigen. Sie können das Basis-Image (FROM), die installierten Abhängigkeiten (RUN pip install...) und den endgültigen Befehl (CMD) analysieren. So erhalten Sie Informationen zur Laufzeitumgebung der Anwendung.

Aufgabe 4: Was ist der Zweck der Datei main.py?

Sehen wir uns nun den Kern des Codes an. Lassen Sie uns Gemini fragen. Sag Folgendes:

What's the purpose of the `main.py` file?

81d480c285285150.png

Hier kann die Gemini CLI wirklich glänzen. Zuerst wird read_file am backend/main.py aufgerufen. Anschließend analysiert das multimodale Sprachmodell den Python-Code. Es wird erkannt, dass es sich um eine FastAPI-Anwendung handelt, die eine REST API für eine Umfrageanwendung bereitstellt. Anschließend werden die API-Endpunkte und ihre Funktionen erläutert. So sparen Sie sich die Zeit, alles selbst lesen und entschlüsseln zu müssen. Sie können auch weiterführende Fragen stellen, um einige dieser Funktionen im Detail zu erläutern. Ziemlich praktisch, oder? Probieren Sie es aus!

5. Von lokal zu live! Bereitstellung mit Cloud Run und Cloud SQL

db708c2edf0036a9.png

Okay, Cloud-Abenteurer, du hast das Gebiet erkundet. Jetzt ist es an der Zeit, Ihr eigenes Baumhaus in der Cloud zu bauen. Wir werden unsere Quickpoll-Anwendung in eine echte, aktive Web-App umwandeln, die jeder besuchen kann.

Ziel: Die Quickpoll-Anwendung mit einem Cloud SQL for PostgreSQL-Backend in Cloud Run bereitstellen.

Aufgabe 1: Einen stabilen Zweig für unsere Daten schaffen (Cloud SQL einrichten)

Jede gute Anwendung braucht einen Ort, an dem sie ihre wertvollen Eicheln aufbewahren kann… Ich meine Daten! Wir verwenden Cloud SQL for PostgreSQL. Es ist wie ein magischer, sich selbst pflegender Garten für unsere Datenbank, damit wir uns auf die schönen Dinge konzentrieren können.

Wir bitten die Gemini-Befehlszeile, die Grundlage für unsere Datenbank zu schaffen.

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

6c09e8e548efe217.png

Die Gemini CLI mit der Cloud SQL-Erweiterung wird aktiv. Dort wird der Tool-Aufruf „create_instance“ angezeigt. Genehmige es einfach.

Nachdem die Instanz erstellt wurde, sollte die Ausgabe in etwa so aussehen:

1378c05137bf9260.png

Sie können eine .env-Datei mit der oben genannten Umgebungsvariable erstellen und sie vor dem Neustart von Gemini CLI einlesen, damit die CLI auf diese Variablen zugreifen kann.

Während unsere Instanz wächst, bereiten wir den Boden vor. Wir benötigen eine Datenbank und einen Nutzer für unsere App.

In the quickpoll-db instance, create a new database named quickpolldb.

Gemini CLI verwendet das Tool create_database in der Cloud SQL for PostgreSQL-Erweiterung, um die Datenbank für Sie zu erstellen.

3a0ffbf97fbc35cc.png

Fügen wir nun einen Nutzer hinzu, der sich darum kümmert:

In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.

Dieses Mal wird in der Gemini CLI das Tool create_user verwendet.

562db72ed9a59d4a.png

Aufgabe 2: Der Secret-Pfad (Backend verbinden)

Unser Backend muss den geheimen Pfad zu unserer neuen Datenbank kennen. Sehen wir uns an, wie das funktioniert.

show me how would the backend/main.py connect to the database

6592c52d634253ce.png

Aha! Seht ihr das? Dabei wird der Cloud SQL Python-Connector verwendet und nach Umgebungsvariablen wie CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD und CLOUD_SQL_POSTGRES_DATABASE gesucht. Wir müssen sie unserem Cloud Run-Dienst zur Verfügung stellen.

Zuerst benötigen wir die CLOUD_SQL_POSTGRES_INSTANCE. Das ist wie ein geheimer Händedruck.

What are the details for the Cloud SQL instance quickpoll-db in us-central1?

aa539ea8798aad71.png

Es werden viele Details angezeigt. Suchen Sie nach dem Verbindungsnamen und kopieren Sie den Wert. Sie sollte etwa so your-project-id:us-central1:quickpoll-db aussehen:

Bevor wir die Anwendung in Cloud Run bereitstellen, instanziieren wir die Datenbank mit den erforderlichen Tabellen. Da wir eine separate Datenbank und einen Nutzer erstellt haben, beenden wir Gemini CLI und aktualisieren die .env-Datei, die wir zuvor erstellt haben, mit den neuen Werten:

export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb

Starten Sie die Gemini CLI neu und geben Sie Folgendes ein:

execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

5201cbf678dd3fc9.png

Das Tool hat automatisch erkannt, dass execute_sql die Ausführung mehrerer SQL-Befehle in einem einzigen Aufruf nicht unterstützt. Daher wurde jeder SQL-Befehl separat ausgeführt.

Aufgabe 3: Backend, Take Flight! (In Cloud Run bereitstellen)

Es ist Zeit, dass unser Backend das Nest verlässt. Wir weisen Gemini an, den Backend-Ordner in Cloud Run bereitzustellen und den geheimen Pfad zur Datenbank anzugeben.

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 verpackt Ihren Code, erstellt ein Container-Image und stellt es in Cloud Run bereit. Wenn das erledigt ist, was einige Minuten dauern kann, erhalten Sie eine URL für Ihren neuen Backend-Dienst. Bewahren Sie diese URL sorgfältig auf.

f3330321e52c98e9.png

Aufgabe 4: Feinschliff (Front-End konfigurieren und bereitstellen)

Unser Frontend ist wie das freundliche Gesicht unserer Anwendung. Es muss wissen, wo das Backend zu finden ist. Sagen wir ihm, wohin es gehen soll.

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

a80fe48e54b47c4.jpeg

Aufgabe 5: Die große Enthüllung!

Das war’s! Die Stunde der Wahrheit! Rufen Sie die URL für Ihren Dienst „quickpoll-fe“ ab und öffnen Sie sie in Ihrem Webbrowser.

Ihre QuickPoll-Anwendung sollte jetzt live und einsatzbereit sein. Erstelle eine Umfrage, gib eine Stimme ab und sieh dir an, wie die Ergebnisse in Echtzeit aktualisiert werden.

Geschafft! Sie haben ein Projekt von Ihrem lokalen Computer in die Google Cloud übertragen und dort zum Leben erweckt. Und das alles bequem von Ihrem Terminal aus mit Ihrem treuen Assistenten, Gemini CLI.

Das nenne ich Produktivität!

6. Für Entwickler: Beschleunigung des Entwicklungszyklus

8feb670e686f4038.png

So, liebe Entwickler, jetzt wird es richtig spannend. Wir haben uns ein Projekt angesehen, aber jetzt ist es an der Zeit, es zu erstellen. Ich zeige Ihnen, wie Gemini Ihr ultimativer Coding-Partner sein kann und Ihnen hilft, schneller als ein Eichhörnchen eine Nuss findet, aus einer einfachen Idee produktionsreifen Code zu erstellen.

Von der Idee zum Code

Denken Sie an den typischen Entwicklungszyklus. Es geht nicht nur darum, Code zu schreiben, oder? Es geht um das Erstellen von Gerüsten, das Hinzufügen der Fehlerbehandlung, das Refactoring und das Schreiben von Tests. Gemini kann dir dabei helfen.

Standardtexte und sich wiederholende Aufgaben: Schluss mit dem Kopieren und Einfügen!

Sie haben jetzt die grundlegende Anwendungsfunktionalität. Jetzt müssen Sie Logging hinzufügen und potenzielle Fehler behandeln, oder? Das sind in der Regel viele sich wiederholende try...except-Blöcke. Das ist nicht mehr der Fall. Wir beginnen damit, die Gemini-Befehlszeile zu bitten, den Code zu analysieren und Best Practices für die Fehlerprotokollierung und Ausnahmebehandlung vorzuschlagen:

What are the best practices for error handling and logging that should also be included in this application?

3a132d7bbf57bf67.png

Gemini CLI analysiert die vorhandene Datei und gibt einige Empfehlungen für Best Practices. Es ist wie ein Experte, der Ihnen die Recherche abnimmt.

Lassen Sie die Empfehlungen nun umsetzen:

please go ahead and implement these in the existing app

Die tatsächliche Ausgabe kann in Ihrem Fall abweichen, aber am Ende sollten Sie die Details der vorgenommenen Änderungen sehen. Im Screenshot unten sehen Sie beispielsweise, dass structlog hinzugefügt wurde, um JSON-formatierte Logs zu erstellen, eine zentrale Ausnahmebehandlung implementiert wurde und die Art und Weise, wie Anforderungsantworten protokolliert werden, verbessert wurde. Stellen Sie sich vor, wie viel Tipparbeit Sie sich gerade gespart haben!

7fcd0153f88740ce.png

Refactoring: Ihr persönlicher Code-Reviewer

Wir alle möchten sauberen, effizienten Code schreiben. Manchmal haben wir es aber eilig. Gemini kann als persönlicher Code-Reviewer fungieren. Sie können beispielsweise Folgendes fragen:

please perform a comprehensive code review for best practices and security

e5482012a524210e.png

32039b0638d1efd.png

Gemini versteht sprachspezifische Best Practices. Die tatsächliche Ausgabe kann sich in Ihrem Fall von den Screenshots oben unterscheiden. Wenn Sie sich die Ausgabe jedoch ansehen, werden Sie feststellen, wie detailliert Gemini CLI den Code analysiert hat. So können Sie gleichzeitig lernen und Ihren Code verbessern.

Testgenerierung: Das Beste!

Das ist mein Lieblingstrick! Wir wissen alle, dass wir Tests schreiben sollten, aber das kann mühsam sein, insbesondere wenn Sie Dinge simulieren müssen. Seht euch das hier an. Sie können einfach fragen:

Add a test suite to this application

d7475f5ca8c9d99d.png

ac55b84b842187b.png

3653819afe847cf3.png

Gemini analysiert Ihre Funktion, ermittelt die Ein- und Ausgaben und findet heraus, welche Abhängigkeiten bestehen. Anschließend wird eine vollständige test_main.py-Datei mit mehreren Testläufen generiert, darunter ein „Happy Path“ und möglicherweise eine Fehlerbedingung. Das ist ein enormer Produktivitätsschub.

Führen Sie die Tests aus. (Eine Challenge-Aufgabe für dich)

Jetzt wird es richtig spannend. Ich überlasse es Ihnen, diesen Teil selbst zu erkunden. Sie können Gemini CLI auffordern, die generierten Testläufe auszuführen. Lehnen Sie sich dann einfach zurück und beobachten Sie, wie die Magie geschieht.

7. Über den Localhost hinaus: Integration mit GitHub

d2664a4c173f1d6.png

Wir haben auf unserem lokalen Computer, unserer eigenen kleinen Ecke des Waldes, großartige Arbeit geleistet. Die eigentliche Stärke der Cloud liegt jedoch in der Zusammenarbeit und Vernetzung. Es ist an der Zeit, abzuheben und zu sehen, wie Gemini mit der Welt interagieren kann. Wir beginnen mit dem größten Baum im Entwicklerwald: GitHub.

Konzept: Ihr integrierter DevOps-Assistent

Bisher haben wir Gemini als lokalen Coding-Partner verwendet. Wir werden ihn jetzt zu einem vollwertigen integrierten DevOps-Assistenten weiterentwickeln. Das ist alles dank der MCP-Integration (Model Context Protocol) möglich. Das ist ein schicker Name, aber er bedeutet nur, dass Gemini in Ihrem Namen sicher mit anderen Diensten kommunizieren kann. Der erste Dienst, den wir beherrschen werden, ist GitHub.

Überlegen Sie einmal: Wie oft müssen Sie Ihr Terminal verlassen, um eine Pull-Anfrage zu prüfen, ein Problem zu erstellen oder ein Repository auf GitHub zu durchsuchen? Das ist noch mehr Kontextwechsel! Mit dem github-Toolset können Sie all das direkt hier erledigen. Dadurch wird Gemini zu einer nativen Schnittstelle für GitHub.

Die offizielle GitHub-Dokumentation zum MCP-Server bietet umfassende Informationen zu den bereitgestellten Tools und Konfigurationsoptionen. Sie können zwischen lokalem und Remote-Betrieb wählen, da die Gemini-Befehlszeile beide Remote-MCP-Server vollständig unterstützt.

In dieser Anleitung wird beschrieben, wie Sie die Option „Remote-MCP-Server für GitHub“ einrichten. Zuerst benötigen Sie ein persönliches Zugriffstoken (Personal Access Token, PAT) von GitHub.

Sobald Sie Ihr PAT haben, können Sie das MCP-Serverobjekt in Ihre Datei „settings.json“ einfügen. Meine vollständige Datei „settings.json“ ist unten zu sehen. Sie können aber einfach dafür sorgen, dass Ihr „mcpServers“-Objekt mit dem übereinstimmt, was Sie hier sehen:

{
  "security": {
    "auth": {
      "selectedType": "vertex-ai"
    }
  },
 "mcpServers": {
    "github": {
      "httpUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "GITHUB_PAT"
      },
      "timeout": 5000
    }
  }
}

Nachdem Sie die Datei „settings.json“ mit der GitHub-MCP-Serverkonfiguration aktualisiert haben, starten Sie die Gemini CLI einfach neu oder führen Sie den Befehl „/mcp refresh“ aus. Der Screenshot unten zeigt den GitHub-MCP-Server, der jetzt auf meinem System eingerichtet ist. Er veranschaulicht die Vielzahl leistungsstarker Tools, die Gemini CLI jetzt mit dem Model Context Protocol nutzen kann.

cf9cab5f70ca1fc2.png

Tastenkombinationen

Gemini bietet eine Reihe neuer Funktionen speziell für GitHub. Hier sind einige meiner Favoriten:

  • github.list_repositories: Sie möchten alle Repositories in Ihrer Organisation sehen, ohne einen Browser zu öffnen? Das ist Ihr Tool. Fragen Sie einfach: „List all the repositories in my org.“ (Liste alle Repositories in meiner Organisation auf).
  • github.create_issue: Du hast einen Fehler gefunden? Sie müssen nicht das Fenster wechseln, um ein Problem zu erstellen. Sie können Gemini einfach auffordern, ein Problem im sample-flask-app-Repository mit dem Titel „Fix the login bug“ (Anmeldefehler beheben) und der folgenden Beschreibung zu erstellen. Schwupps wird das Problem erstellt.
  • github.get_pull_request: Möchten Sie den Status einer PR prüfen? Sie können fragen: „Zeige mir die Details von PR-Nummer 42 im sample-flask-app-Repository.“ Gemini ruft den Titel, die Beschreibung, den Status und die Namen der Rezensenten ab.
  • github.get_file_contents: Diese Funktion ist wirklich cool. Sie können eine Datei aus einem Remote-Repository lesen, ohne sie zuerst klonen zu müssen. Das ist ideal, um schnell eine Konfigurationsdatei oder die README-Datei eines Projekts zu prüfen, das Sie nicht lokal haben.

8. GitHub-Erkundung

7e66f28519488019.png

Genug geredet, lass uns fliegen! Wir werden unsere neuen GitHub-Funktionen nutzen, um eine Organisation und ein Projekt zu erkunden – alles bequem über unser Terminal.

Ziel: Mit Gemini ein auf GitHub gehostetes Projekt untersuchen und verstehen.

Szenario: Sie müssen sich mit einem Projekt auf GitHub vertraut machen, an dem Sie noch nicht gearbeitet haben.

Aufgabe 1: Repositories in einer Organisation auflisten

Sehen wir uns zuerst alle Projekte in einer GitHub-Organisation an. Für dieses Lab können Sie Ihren eigenen GitHub-Nutzernamen oder eine Organisation verwenden, der Sie angehören. Bitten wir Gemini, sie aufzulisten.

List the repositories in the `[your-org-or-username]` GitHub organization.

Denken Sie daran, [your-org-or-username] durch Ihre tatsächlichen Informationen zu ersetzen. Gemini verwendet das Tool github.list_repositories und zeigt Ihnen eine Liste aller Projekte an. Sehr gut!

Aufgabe 2: Ein bestimmtes Repository finden

Okay, du siehst eine Liste der Repositories. Jetzt müssen Sie wie ein echter Entwickler diese Liste durchsuchen und das gewünschte Projekt finden. Für unser Lab nehmen wir an, dass wir nach dem Repository quickpoll suchen, das wir zuvor geklont haben. Für diesen Teil benötigen Sie keinen Befehl. Lesen Sie einfach die Ausgabe des letzten Schritts und suchen Sie das Repository.

Aufgabe 3: Offene Pull-Anfragen auflisten

Nachdem wir das Ziel-Repository identifiziert haben, sehen wir uns an, was damit passiert. Gibt es offene Pull-Anfragen? Wir fragen:

List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.

Gemini verwendet das Tool github.list_pull_requests und filtert nach dem Status open. Anschließend werden alle offenen PRs mit der PR-Nummer, dem Titel und dem Ersteller aufgelistet. Hier sehen Sie auf einen Blick, wie das Projekt gerade entwickelt wird. Sie können dies mit einem Repository ausprobieren, zu dem Sie aktiv beitragen, und die Ergebnisse prüfen.

38aecd94347e633c.png

Aufgabe 4: Pull-Anfrage untersuchen

Angenommen, in dieser Liste gibt es einen interessanten PR. Wir möchten mehr darüber erfahren! Wir möchten die Beschreibung und die geänderten Dateien sehen. Wähle eine PR-Nummer aus der Liste aus (wenn keine vorhanden ist, kannst du diesen Schritt überspringen).

Show me the details and files changed in PR number 1 in the `quickpoll` repo.

Das ist ein tolles Beispiel für eine mehrstufige Aufgabe für Gemini. Zuerst wird wahrscheinlich github.get_pull_request verwendet, um die wichtigsten Details abzurufen, z. B. Titel, Text und Autor. Anschließend wird mit einem zweiten Tool, github.get_pull_request_files, nach den Dateiänderungen gesucht. Anschließend werden alle diese Informationen in einer übersichtlichen Zusammenfassung für Sie zusammengefasst. Sie haben gerade einen Pull-Request überprüft, ohne das Terminal zu verlassen. Das ist doch unglaublich!

9. Vom PRD zum ersten Commit

bbaad74efa344d07.png

Sie haben gelernt, wie Sie die Funktionen von Gemini erkunden, nutzen und testen können. Sehen wir uns nun ein Beispiel aus der Praxis an. In dieser Phase wird aus einem Plan ein Produkt. Wir beginnen mit einem Dokument mit den Produktanforderungen (Product Requirements Document, PRD) und arbeiten uns bis zum ersten Commit vor. Lassen Sie uns etwas Erstaunliches schaffen!

Ziel: Eine Entwicklungsaufgabe aus der Praxis von Anfang bis Ende simulieren, wobei lokaler und Remote-Kontext kombiniert werden.

Szenario: Ihnen wurde eine neue Funktion zugewiesen. Die Anforderungen finden Sie in einer PRD-Datei im GitHub-Repository des Projekts.

Aufgabe 1: PRD lesen und verstehen

Das ist der wichtigste Schritt. Bevor Sie auch nur eine einzige Zeile Code schreiben, müssen Sie den Plan unbedingt verstehen. Die Anforderungen an unsere neue Funktion sind in der Datei „prd/NEW_FEATURE.md“ enthalten. Lass uns es aufbrechen und sehen, was drin ist.

explain the requirements mentioned in prd/NEW_FEATURE.md

Gemini CLI verwendet „read_file“, um den Inhalt des PRD zu präsentieren. Eintauchen Darin wird die neue Funktion beschrieben: eine Schaltfläche zum Aktualisieren, mit der Nutzer die Liste der aktiven Umfragen manuell aktualisieren können. Sehen Sie immer zuerst im Blueprint nach.

b07e95a5977e927d.png

Aufgabe 2: Code – Anforderungen in die Realität umsetzen

Das ist der magische Moment! Wir übernehmen die Anforderungen aus dem PRD und bitten Gemini, den Code für uns zu schreiben. Wir müssen genau angeben, was wir möchten.

Implement the changes as per the PRD

Die Gemini CLI wird aktiviert und nach kurzer Zeit sehen Sie eine Ausgabe, die in etwa so aussieht. Unser neuer Code hat jetzt ein gemütliches Zuhause!

aff664dee6796f8b.png

Aufgabe 3: Änderungen überprüfen

Wir haben eine neue Datei mit neuem Code erstellt. Im letzten Schritt dieses Labs stellen Sie die Änderung in Cloud Run bereit und bestätigen sie.

let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.

Beachten Sie, dass der Prompt zusätzliche Details wie den Namen des vorhandenen Cloud Run-Dienstes und die Bereitstellungsregion enthält. Wenn Sie spezifisch sind, sparen Sie Zeit. Gemini CLI fordert Sie jedoch immer auf, fehlende Details anzugeben, wenn Sie sie weglassen.

Sollte bei Ihrem aktualisierten Cloud Run-Dienst ein Fehler auftreten, bitten Sie Gemini CLI einfach, den Code zu debuggen und zu korrigieren. Denken Sie daran, dass es Ihr leistungsstarker Begleiter ist.

10. Glückwunsch

393fa778d8ee9f18.png

Das war's auch schon! Sie haben gerade einen vollständigen Entwicklungszyklus abgeschlossen. Sie haben aus einem Anforderungsdokument eine neue Funktion entwickelt, die bereit ist, committet und gepusht zu werden. Sie haben lokalen Kontext, Remote-Kontext, Dateisystemvorgänge und Codegenerierung kombiniert. Sie sind nicht nur Entwickler, sondern auch ein äußerst produktiver Cloud Architect. Glückwunsch!

Referenzdokumente