1. Introduzione

Ciao! Mi chiamo Fido! Sono felice che tu abbia potuto partecipare. Sono arrivato direttamente da un cluster GKE in us-central1 per essere qui oggi. Ti diamo il benvenuto in questo codelab.
Ho passato tutta la vita a correre attraverso i flussi di dati di Google Cloud e ho visto di tutto. Ho visto te, gli architetti e gli ingegneri, costruire cose incredibili. Ma ti ho anche visto rimanere impigliato nei rovi. Sai di cosa sto parlando. La sensazione di cambio di contesto quando esegui il debug di un pod in GKE. Passi da kubectl logs alla console GCP per controllare l'integrità del nodo, all'IDE per esaminare il codice sorgente di cui è stato eseguito il deployment e a una scheda del browser con la documentazione ufficiale di Kubernetes per gli hook del ciclo di vita dei pod. Ogni salto è una pausa nella concentrazione.
E gli strumenti complessi. gcloud, kubectl, terraform… ognuno con il proprio DSL e una montagna di flag. Ciò porta a una costante ricerca di documentazione. Finisci per cercare quel comando gcloud perfetto con la giusta combinazione di flag --filter e --format per ottenere i dati di cui hai bisogno. È come cercare una noce specifica in una foresta di milioni di noci. E non farmi parlare delle attività ripetitive. Ti ho visto scrivere lo stesso Dockerfile e cloudbuild.yaml per un nuovo servizio Python così tante volte che il codice probabilmente ha un deja vu.
Sono qui per mostrarti un modo migliore. Un sentiero segreto nel bosco. È proprio questo lo scopo dell'interfaccia a riga di comando di Gemini.
Che cos'è Gemini CLI?
Qual è questa scorciatoia magica che mi entusiasma così tanto?
Pensa a Gemini CLI come al tuo compagno personale del cloud, direttamente nel terminale. È una conversazione, una partnership. È sensibile al contesto, il che significa che non si limita ad ascoltare, ma comprende. Può leggere i tuoi file, apprendere le convenzioni del tuo progetto, ad esempio se utilizzi tabulazioni o spazi, e capire cosa stai cercando di fare. È come se potessi sentire l'odore delle ghiande che stai cercando di raccogliere.
Architettura di alto livello (diamo un'occhiata dietro le quinte)
Come funziona? È un mix di alcune cose interessanti che funzionano in armonia:
- Un modello linguistico potente:questo è il cervello. Nello specifico, è un modello multimodale di grandi dimensioni addestrato da Google. "Multimodale" significa che non si limita a comprendere il testo, ma anche la struttura e il significato del codice. In questo modo, può ragionare sul tuo software, non solo leggerlo.
- Contesto locale: è fondamentale. Gemini CLI viene eseguita come processo sulla tua macchina locale, con le stesse autorizzazioni del tuo account utente. Ciò significa che può accedere al file system per fornire assistenza specifica per il progetto. Non si tratta di un servizio cloud remoto che indovina il tuo codice, ma è qui con te.
- Un ecosistema di strumenti:è il modo in cui il modello interagisce con il mondo. Ha un insieme ben definito di funzioni che può chiamare, come
read_fileorun_shell_command. Pensa a un'API sicura. Il modello decide cosa fare e quale strumento utilizzare, quindi genera un bloccotool_codeper eseguirlo. In questo modo, le sue azioni sono prevedibili e affidabili. - Esecuzione di comandi shell: questa è la vera magia. Può eseguire qualsiasi comando in una subshell
bash -c <command>. Acquisiscestdout,stderreexit code. È una notizia fantastica. Ciò significa che Gemini CLI può eseguire un comando, verificare se non è riuscito e quindi provare a risolverlo in base al messaggio di errore. - La rete di sicurezza:questa è la mia parte preferita. Prima dell'esecuzione del blocco
tool_code, il client CLI mostrerà il comando o il codice exact e ti chiederà la conferma. Si tratta di un controllo lato client, quindi hai l'ultima parola prima che qualsiasi cosa tocchi il tuo sistema. Sei sempre tu a decidere.
Non è solo un chatbot, ma un vero e proprio assistente. Un aiuto attivo nella tua avventura di programmazione.
Il concetto chiave: dichiarativo e imperativo
Il cambiamento più grande e straordinario è il passaggio dal dire al computer come fare qualcosa al dirgli cosa vuoi.
- Imperativo (il vecchio percorso spinoso): devi fornire ogni singolo passaggio. Devi essere un esperto del linguaggio specifico del dominio dello strumento. Come questo comando mostruoso:
Accidenti! Guarda un po' qui! Devi conoscere la sintassi per il tipo di macchina, la famiglia di immagini, i metadati e i tag. Se ne manca una, riceverai un errore criptico.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 - Dichiarativo (la scorciatoia di Sparky): Basta dire quello che vuoi in un inglese semplice.
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
È tutto. Gemini analizza la tua richiesta, la mappa ai parametri dello strumento gcloud, individua la sintassi corretta per ogni flag e crea il comando grande e spaventoso per te. Quindi, te lo presenta per l'approvazione. L'obiettivo è consentirti di concentrarti sul quadro generale, non di memorizzare i flag della riga di comando.
Estendere la potenza di Gemini: un'introduzione alle estensioni della CLI
Sebbene Gemini CLI sia uno strumento potente pronto all'uso, il suo vero potenziale si sblocca tramite le estensioni. Le estensioni sono pacchetti di prompt, strumenti e comandi personalizzati che migliorano la funzionalità della CLI, consentendoti di adattarla alle tue esigenze e ai tuoi flussi di lavoro specifici.
Trovare e installare le estensioni
La CLI Gemini ha un ecosistema in crescita di estensioni create sia da Google che da sviluppatori di terze parti. Puoi sfogliare la directory ufficiale delle estensioni all'indirizzo geminicli.com/extensions.
Per installare un'estensione, puoi utilizzare il comando gemini extensions install con l'URL del repository Git dell'estensione. Ad esempio, per installare l'estensione Cloud SQL per PostgreSQL ufficiale, esegui:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Ok, basta chiacchiere. Mettiamo le mani in pasta e proviamo questa cosa.
2. Prima di iniziare

Ciao, futuri maghi del cloud. Sparky, al tuo servizio. Prima di iniziare la nostra grande avventura, dobbiamo assicurarci che l'ambiente del workshop sia pronto. Immagina di preparare le valigie con tutti gli strumenti giusti e le ghiande magiche prima di avventurarci nella foresta. Seguimi!
Se hai già un progetto Google Cloud, puoi utilizzare Gemini CLI in Google Cloud Shell, poiché è preinstallata. In alternativa, segui questi passaggi per configurarla sulla tua macchina locale.
Passaggio 1: i prerequisiti
Ogni buon avventuriero ha bisogno di una base solida. Prima di poter installare Gemini CLI, devi configurare alcune cose sulla tua macchina locale.
- Google Cloud SDK (
gcloud): questo è il toolkit principale per Google Cloud. L'interfaccia a riga di comando di Gemini fa parte di questa famiglia.
- Controlla se è installato: esegui
gcloud --version. Se vedi un numero di versione, non devi fare nient'altro. - Se non è installato: segui le istruzioni ufficiali riportate all'indirizzo cloud.google.com/sdk/docs/install.
- Git: ci servirà per clonare il repository del lab pratico.
- Controlla se è installato: esegui
git --version. - Se non è installato: puoi scaricarlo da git-scm.com/downloads.
- Progetto GCP e autenticazione:
- Assicurati di avere un progetto Google Cloud con la fatturazione abilitata. Questo è molto importante.
- Accedi al tuo Account Google eseguendo:
gcloud auth login
- Imposta il progetto per la sessione. Trova l'ID progetto nella console Google Cloud ed esegui:
gcloud config set project YOUR_PROJECT_ID
(Sostituisci YOUR_PROJECT_ID con l'ID progetto effettivo.)
- Node.js versione 20 o successive
Passaggio 2: ottieni la magia (Installazione di Gemini CLI)
Bene, dopo aver visto le basi, è il momento di passare all'evento principale. Installeremo Gemini CLI.
Esegui immediatamente con npx
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
Installare a livello globale con npm
npm install -g @google/gemini-cli
Installare a livello globale con Homebrew (macOS/Linux)
brew install gemini-cli
Controllare la versione di Gemini
gemini --version
Dovresti visualizzare un numero di versione. Ciò conferma che l'installazione è stata completata correttamente.
Passaggio 3: accensione (configurazione)
Ora che Gemini CLI è installata, dobbiamo fornirle le chiavi del regno. Per prima cosa, avvialo eseguendo il comando gemini nel terminale. Dovresti visualizzare la seguente schermata:

Per semplificare la procedura, puoi autenticarti con il tuo Account Google, che ti consente di accedere a Gemini 2.5 Pro con una finestra contestuale da 1 milione di token e fino a 60 richieste al minuto e 1000 richieste al giorno senza dover gestire una chiave API.
Se vuoi accedere a modelli Gemini specifici o eseguire l'upgrade a limiti più elevati quando necessario, utilizza la chiave API Gemini come metodo di autenticazione.
Per i team Enterprise e i carichi di lavoro di produzione che hanno già configurato un progetto Google e un account di fatturazione, utilizza Vertex AI per sicurezza e conformità avanzate.
A seconda dell'opzione scelta, ti verranno richiesti i passaggi successivi per configurare l'autenticazione. Per ulteriori dettagli su queste opzioni, consulta la documentazione dell'interfaccia a riga di comando Gemini.
Se intendi utilizzare la piattaforma Vertex AI di Google Cloud, esci prima da Gemini CLI premendo ctrl+c due volte e impostiamo le variabili di ambiente richieste
Indipendentemente dal metodo di autenticazione, in genere devi impostare le seguenti variabili: GOOGLE_CLOUD_PROJECT e GOOGLE_CLOUD_LOCATION.
Per impostare queste variabili:
# 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"
Ora accediamo a Google Cloud:
gcloud auth application-default login
Una volta eseguita l'autenticazione con il metodo precedente, avvia di nuovo Gemini CLI eseguendo il comando gemini nel terminale. Nelle opzioni di autenticazione, seleziona Vertex AI e il gioco è fatto.
Passaggio 4: il test della scintilla (Verifica della configurazione)
Questo è il momento della verità. Vediamo se tutto funziona. Esegui questi comandi per assicurarti che tutte le spie siano verdi.
- Digita il seguente prompt:
What is my current directory?
Gemini CLI dovrebbe rispondere indicando la directory di lavoro attuale. In questo modo vengono testati il modello linguistico principale e l'integrazione della shell.

- Testa connessione GCP:
list my gcs buckets
Se hai bucket GCS, dovrebbero essere elencati. In caso contrario, ti verrà comunicato che non ce ne sono. Ciò conferma che è connesso correttamente al tuo progetto Google Cloud.
Passaggio 5: aggiungi altri superpoteri (Installazione di estensioni)
Ora miglioriamo le funzionalità di Gemini CLI installando alcune estensioni che ci saranno utili più avanti nel lab.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Sicurezza di 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 per PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Se tutti questi comandi hanno funzionato, sei ufficialmente pronto per il workshop. Il tuo ambiente è configurato e puoi iniziare a dare il via alla tua produttività. Ci vediamo nel primo lab.
3. Concetti principali e interazione con lo spazio di lavoro locale

Ok, pronto a sporcarti le zampe? Ora esamineremo gli strumenti effettivi nella tua nuova cassetta degli attrezzi di Gemini. Li considero i miei superpoteri per esplorare e creare nel cloud. Vediamo un po' come funzionano.
Funzionalità principali
Divido i miei poteri in due categorie: vedere cosa c'è in giro e poi fare le cose.
Comprendere l'ambiente (i miei super sensi!)
Prima di iniziare a costruire un nuovo nido, devi controllare l'albero, giusto? Questi strumenti servono per orientarsi.
list_directory: questo è il mio strumento di base per "annusare" la situazione. Si tratta di un wrapper semplice per l'elenco di directory a livello di sistema operativo standard. La cosa interessante è che il modello può analizzare questo output strutturato per prendere decisioni, ad esempio scegliere di esplorare una sottodirectory denominatasrc.glob: questo è il mio "cercatore di ghiande". Utilizza pattern glob standard, come*,**,?e[], che già conosci da elementi come.gitignore. Pertanto, puoi chiedere "Trova tutti i file*.pynella directoryapp" utilizzando il patternapp/**/*.py. È un modo efficace per raccogliere un insieme specifico di file da analizzare per il modello.search_file_content: Questa è la mia vista a raggi X! Utilizza espressioni regolari complete per le ricerche, non solo la semplice corrispondenza di stringhe. È una funzionalità incredibilmente potente. Puoi chiedere di trovare pattern complessi, ad esempio "Trova tutte le route Flask che utilizzano un metodo POST", che potrebbe generare un'espressione regolare comeapp\.route\(.*methods=\['POST'\].*\). Restituisce il percorso del file, il numero di riga e la riga corrispondente, fornendo al modello tutto il contesto necessario.read_file: una volta trovato un file interessante, vorrai aprirlo.read_fileè ottimizzato per questo. Puoi leggere un intero file oppure, per i file di grandi dimensioni, puoi utilizzare i parametrioffsetelimitper leggerlo in blocchi. Ciò significa che il modello può scansionare in modo efficiente anche file di log di grandi dimensioni senza timeout.
Dalla comprensione all'azione (è ora di creare!)
Ok, hai esplorato il terreno. Ora è il momento di creare il tuo nido. Questi strumenti ti consentono di apportare modifiche e svolgere le tue attività.
**write_file**: devi creare un nuovo file da zero?write_fileè un'operazione atomica che scrive tutti i contenuti che fornisci in un percorso specificato. È perfetto per creare nuovi moduli o unDockerfileda zero in base alle esigenze del tuo progetto.**replace**: questo strumento è per i cambiamenti chirurgici. Non si tratta solo di una semplice operazione di ricerca e sostituzione. Fornisci unold_stringe unnew_string. Affinché questa operazione funzioni in modo sicuro,old_stringdeve essere un frammento univoco del file, in genere con diverse righe di contesto prima e dopo la parte che stai modificando. In questo modo, ci assicuriamo di modificare solo la parte di codice exact che intendi.**run_shell_command**: questo è il potenziamento definitivo. Esegue il comando specificato in una sottoshellbash -c <command>. Il modello ricevestdout,stderreexit code. Questo è fondamentale per la creazione di workflow. Il modello può eseguire unterraform plan, leggere l'output e, se il piano ha esito positivo (codice di uscita 0), può chiederti se deve applicarlo.
La rete di sicurezza (la mia promessa)
Ora, l'esecuzione dei comandi può essere spaventosa. Ho capito. Ecco perché la rete di sicurezza è così importante. Quando il modello genera un blocco tool_code contenente una chiamata a run_shell_command o write_file, il client Gemini CLI lo intercetta. Mostra il comando esatto o l'intero contenuto del file da scrivere e ti chiede [s/n]. Non viene eseguita alcuna azione senza la tua approvazione esplicita. Hai sempre il controllo.
4. Esplorare un progetto

Obiettivo: utilizzare Gemini CLI per comprendere una codebase sconosciuta senza uscire dal terminale.
Scenario: sei un nuovo sviluppatore e devi metterti al passo con questo progetto, in fretta.
Attività 0: configurazione: clona il progetto.
Innanzitutto, dobbiamo ottenere il codice. Si nasconde in un repository pubblico su GitHub, in una "struttura ad albero" chiamata quickpoll. Chiediamo a Gemini CLI di clonarlo per noi. Prima di farlo, creiamo una directory di lavoro e avviamo Gemini CLI al suo interno:
mkdir workdir
cd workdir
gemini
Ora digita questo prompt:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini capirà che "clona" significa utilizzare il comando git clone. Verrà generata una chiamata allo strumento run_shell_command con un valore simile a git clone https://github.com/gauravkakad-google/quickpoll.git. Una volta approvato, il repository verrà scaricato.
Ora usciamo da Gemini CLI premendo ctrl+c due volte, vai al repository di esempio e avvia di nuovo Gemini CLI:
cd quickpoll
gemini
Bene. Ora che ci troviamo all'interno della struttura del progetto, possiamo iniziare a esplorare.
Attività 1: elenca tutti i file del progetto
Ora che siamo dentro, mappiamo l'intera foresta. Vogliamo vedere ogni singolo file. Chiedi a Gemini:
List all the files in the project.
Gemini utilizzerà probabilmente lo strumento glob con il pattern **/*. Elenca in modo ricorsivo ogni file, fornendo un manifest completo del codebase. È un ottimo primo passo per comprendere la struttura del progetto.
Attività 2: trova tutti i file che importano "google.cloud.sql.connector"
Ok, sono curiosa. Dove comunica questo progetto con Google Cloud Storage? Facciamo un po' di lavoro investigativo. Chiedi questo:
Find all files that import the 'google.cloud.sql.connector' library.

Utilizzando la sua potenza di search_file_content, Gemini troverà i file esatti che contengono l'istruzione di importazione. In questo modo, ti concentri immediatamente sulle parti del codice che gestiscono l'interazione con Cloud SQL. In questo progetto dovrebbe trovare backend/main.py.
Attività 3: mostrami i contenuti del Dockerfile principale
Vedo un Dockerfile. Questo è il progetto del nostro container. Diamo un'occhiata all'interno. Basta chiedere:
Show me the contents of the main Dockerfile.

Gemini utilizzerà read_file per visualizzare Dockerfile. Puoi analizzare l'immagine di base (FROM), le dipendenze installate (RUN pip install...) e il comando finale (CMD). In questo modo, puoi conoscere l'ambiente di runtime dell'applicazione.
Attività 4: qual è lo scopo del file main.py?
Bene, è il momento di esaminare il cuore del codice. Chiediamo a Gemini di guidarci. Di':
What's the purpose of the `main.py` file?

È qui che Gemini CLI dà il meglio di sé. Verrà chiamato prima il numero read_file il giorno backend/main.py. Dopodiché, il suo modello linguistico multimodale analizzerà il codice Python. Identificherà che si tratta di un'applicazione FastAPI che fornisce un'API REST per un'applicazione di polling. Verranno quindi spiegati gli endpoint API e le loro funzionalità. Ti fa risparmiare il tempo di dover leggere e decifrare tutto da solo. Puoi anche porre domande aggiuntive per spiegare in dettaglio alcune di queste funzionalità. Piuttosto comodo, no? Prova.
5. Da Local a Live! Deployment con Cloud Run e Cloud SQL

Bene, avventuriero del cloud, hai esplorato il territorio. Ora è il momento di costruire la tua casa sull'albero nel cloud. Prenderemo la nostra applicazione per i sondaggi rapidi e la trasformeremo in una vera e propria app web live che chiunque potrà visitare.
Obiettivo: eseguire il deployment dell'applicazione quickpoll su Cloud Run, con un backend Cloud SQL per PostgreSQL.
Attività 1: un ramo robusto per i nostri dati (configurazione di Cloud SQL)
Ogni buona applicazione ha bisogno di un posto dove conservare le sue preziose ghiande… Mi riferisco ai dati. Utilizzeremo Cloud SQL per PostgreSQL. È come un giardino magico e autonomo per il nostro database, così possiamo concentrarci sulle cose divertenti.
Chiediamo a Gemini CLI di piantare il seme del nostro database.
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, utilizzando la sua estensione Cloud SQL, inizierà a funzionare. Verrà visualizzata la chiamata allo strumento create_instance. Procedi con l'approvazione.
Una volta creata l'istanza, dovresti visualizzare un output simile a questo:

Puoi creare un file .env con la variabile di ambiente precedente e caricarlo prima di riavviare Gemini CLI, in modo che possa accedere a queste variabili.
Mentre la nostra istanza cresce, prepariamo il terreno. Abbiamo bisogno di un database e di un utente per la nostra app.
In the quickpoll-db instance, create a new database named quickpolldb.
Gemini CLI utilizzerà lo strumento create_database nell'estensione Cloud SQL per PostgreSQL per creare il database.

Ora aggiungiamo un utente che se ne occupi:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
Questa volta, Gemini CLI utilizzerà lo strumento create_user.

Attività 2: il percorso del secret (connessione del backend)
Il nostro backend deve conoscere il percorso segreto del nostro nuovo database. Diamo un'occhiata a backend/main.py per vedere come si orienta.
show me how would the backend/main.py connect to the database

Ecco. Vedi? Utilizza il connettore Python Cloud SQL e cerca variabili di ambiente come CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD e CLOUD_SQL_POSTGRES_DATABASE. Dovremo fornirli al nostro servizio Cloud Run.
Innanzitutto, abbiamo bisogno di CLOUD_SQL_POSTGRES_INSTANCE. È come una stretta di mano segreta.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

Vedrai una serie di dettagli. Cerca il nome della connessione e copia il valore. Avrà un aspetto simile a questo: your-project-id:us-central1:quickpoll-db.
Prima di eseguire il deployment dell'applicazione in Cloud Run, creiamo un'istanza del database con le tabelle richieste. Poiché abbiamo creato un database e un utente separati, usciamo da Gemini CLI e aggiorniamo il file .env creato in precedenza con i nuovi valori:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Ora riavvia Gemini CLI e inserisci quanto segue:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

Ha capito automaticamente che lo strumento execute_sql non supporta l'esecuzione di più comandi SQL in una singola chiamata. Pertanto, ha eseguito ogni comando SQL separatamente.
Attività 3: backend, decolla! (Deployment in Cloud Run)
È ora che il nostro backend lasci il nido. Chiederemo a Gemini di eseguire il deployment della cartella di backend su Cloud Run e di fornirgli il percorso segreto del 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 pacchettizzerà il tuo codice, creerà un'immagine container ed eseguirà il deployment su Cloud Run. Al termine dell'operazione, che può richiedere alcuni minuti, riceverai un URL per il tuo nuovo servizio di backend. Tieni a portata di mano l'URL.

Attività 4: gli ultimi ritocchi (configurazione e deployment del frontend)
Il nostro frontend è come il volto amichevole della nostra applicazione. Deve sapere dove trovare il backend. Diciamogli dove andare.
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

Attività 5: la Grande inaugurazione
Ci siamo! Il momento della verità. Prendi l'URL del servizio quickpoll-fe e aprilo nel browser web.
Dovresti visualizzare l'applicazione QuickPoll, attiva e pronta all'uso. Crea un sondaggio, vota e guarda i risultati aggiornarsi in tempo reale.
Ce l'hai fatta! Hai preso un progetto dalla tua macchina locale e lo hai realizzato su Google Cloud. E hai fatto tutto comodamente dal tuo terminale con il tuo fedele compagno, Gemini CLI.
Questa è quella che chiamo produttività.
6. Per lo sviluppatore: accelerare il ciclo di vita dello sviluppo

Bene, sviluppatori, è qui che inizia il vero divertimento. Abbiamo esplorato un progetto, ma ora è il momento di creare. Ti mostrerò come Gemini può essere il tuo partner di programmazione ideale, aiutandoti a trasformare una semplice idea in codice pronto per la produzione più velocemente di quanto uno scoiattolo possa trovare una noce.
Dall'idea al codice
Pensa al ciclo di sviluppo tipico. Non si tratta solo di scrivere codice, giusto? Si tratta di scaffolding, aggiunta della gestione degli errori, refactoring e scrittura di test. Gemini può aiutarti in tutto questo.
Boilerplate e attività ripetitive: niente più copia e incolla.
Ok, hai la funzionalità di base dell'applicazione. Ora devi aggiungere la registrazione e gestire i potenziali errori, giusto? Di solito si tratta di molti blocchi try...except ripetitivi. Non più. Iniziamo chiedendo a Gemini CLI di analizzare il codice e suggerire best practice per la registrazione degli errori e la gestione delle eccezioni:
What are the best practices for error handling and logging that should also be included in this application?

Gemini CLI analizzerà il file esistente e fornirà alcuni consigli sulle best practice. Consideralo un assistente esperto che può farti risparmiare tempo nella ricerca.
Ora chiediamogli di implementare questi consigli per te:
please go ahead and implement these in the existing app
L'output effettivo potrebbe variare nel tuo caso, ma alla fine dovresti visualizzare i dettagli delle modifiche apportate. Ad esempio, nello screenshot seguente puoi vedere che è stato aggiunto structlog per produrre log in formato JSON, è stata implementata la gestione centralizzata delle eccezioni ed è stato migliorato il modo in cui vengono registrate le risposte alle richieste. Pensa a tutto quello che hai risparmiato in termini di digitazione.

Refactoring: il tuo revisore del codice personale
Tutti vogliamo scrivere codice pulito ed efficiente. A volte, però, abbiamo fretta. Gemini può fungere da revisore del codice personale. Puoi chiedere cose come:
please perform a comprehensive code review for best practices and security


Gemini comprende le best practice specifiche per la lingua. Anche in questo caso, l'output effettivo potrebbe essere diverso dagli screenshot precedenti, ma se lo leggi, apprezzerai il livello di dettaglio raggiunto dall'interfaccia a riga di comando di Gemini per analizzare il codice. In questo modo puoi imparare e migliorare il tuo codice allo stesso tempo.
Generazione del test: la parte migliore!
Questo è il mio trucco preferito. Sappiamo tutti che dovremmo scrivere test, ma può essere noioso, soprattutto quando devi simulare le cose. Allora guarda questo. Puoi semplicemente chiedere:
Add a test suite to this application



Gemini analizzerà la funzione, identificherà gli input e gli output e determinerà le sue dipendenze. Verrà quindi generato un file test_main.py completo con diversi scenari di test, tra cui un "happy path" e forse una condizione di errore. Si tratta di un enorme aumento della produttività.
Esegui i test. (Un'attività di sfida per te)
Ed è qui che le cose si fanno davvero entusiasmanti. Ti lascio questa parte come sfida da esplorare in autonomia. Puoi chiedere a Gemini CLI di eseguire gli scenari di test che ha generato. A questo punto, non ti resta che rilassarti e osservare la magia che si compie.
7. Oltre localhost: integrazione con GitHub

Abbiamo fatto un ottimo lavoro sulla nostra macchina locale, il nostro piccolo angolo di foresta. Ma il vero potere del cloud è la collaborazione e la connessione. È il momento di spiccare il volo e vedere come Gemini può interagire con il mondo, a partire dall'albero più grande della foresta degli sviluppatori: GitHub.
Concetto: il tuo assistente DevOps integrato
Finora, abbiamo utilizzato Gemini come assistente di programmazione locale. Ora lo aggiorneremo a un assistente DevOps integrato completo. Tutto questo grazie all'integrazione del Model Context Protocol (MCP). È un nome sofisticato, ma significa semplicemente che Gemini può comunicare in modo sicuro con altri servizi per tuo conto e il primo che impareremo a usare è GitHub.
Riflettici. Quanto spesso devi lasciare il terminale per controllare una richiesta di pull, creare un problema o sfogliare un repository su GitHub? Ecco un altro cambio di contesto. Con il set di strumenti github, puoi fare tutto questo direttamente qui. Trasforma Gemini in un'interfaccia nativa per GitHub.
La documentazione ufficiale del server MCP di GitHub fornisce ampie indicazioni sugli strumenti e sulle opzioni di configurazione esposti. Puoi scegliere tra l'operazione locale o remota, poiché la CLI Gemini supporta completamente entrambi i server MCP remoti.
Questo tutorial ti guiderà nella configurazione dell'opzione Remote MCP Server per GitHub. Per prima cosa, devi disporre di un token di accesso personale (PAT) di GitHub.
Una volta ottenuto il PAT, è il momento di aggiungere l'oggetto MCP Server al file settings.json. Il mio file settings.json completo è mostrato di seguito, ma puoi semplicemente assicurarti che l'oggetto mcpServers corrisponda a quello che vedi qui:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
Dopo aver aggiornato il file settings.json con la configurazione del server GitHub MCP, riavvia Gemini CLI o esegui il comando /mcp refresh. Lo screenshot seguente mostra il server GitHub MCP ora pronto sul mio sistema, che mette in evidenza l'insieme di potenti strumenti che Gemini CLI può ora utilizzare con il protocollo di contesto del modello.

Mostra i comandi principali
Gemini offre un nuovo set di superpoteri specifici per GitHub. Ecco alcuni dei miei preferiti:
github.list_repositories: vuoi visualizzare tutti i repository della tua organizzazione senza aprire un browser? Questo è il tuo strumento. Basta chiedere "Elenca tutti i repository della mia organizzazione".github.create_issue: hai trovato un bug? Non cambiare finestra per creare un problema. Puoi semplicemente dire a Gemini: "Crea un problema nel repositorysample-flask-appintitolato "Correggi il bug di accesso" con questa descrizione…" e puff, il problema viene creato.github.get_pull_request: Hai bisogno di controllare una PR? Puoi chiedere: "Mostrami i dettagli della richiesta di pull numero 42 nel repositorysample-flask-app". Gemini recupererà il titolo, la descrizione, lo stato e i revisori.github.get_file_contents: Questo è fantastico. Puoi leggere un file da un repository remoto senza doverlo clonare prima. È ideale per controllare rapidamente un file di configurazione o il file README di un progetto che non hai localmente.
8. Esplorazione di GitHub

Basta chiacchiere, andiamo a volare! Utilizzeremo i nostri nuovi poteri di GitHub per esplorare un'organizzazione e un progetto, il tutto comodamente dal nostro terminale.
Obiettivo: utilizzare Gemini per esplorare e comprendere un progetto ospitato su GitHub.
Scenario: devi acquisire familiarità con un progetto su GitHub su cui non hai mai lavorato prima.
Attività 1: elenca i repository in un'organizzazione
Innanzitutto, visualizziamo tutti i progetti in un'organizzazione GitHub. Per questo lab, puoi utilizzare il tuo nome utente GitHub o un'organizzazione a cui appartieni. Chiediamo a Gemini di elencarli.
List the repositories in the `[your-org-or-username]` GitHub organization.
Ricorda di sostituire [your-org-or-username] con le tue informazioni reali. Gemini utilizzerà lo strumento github.list_repositories e ti mostrerà un elenco di tutti i progetti. Fantastico!
Attività 2: trova un repository specifico
Ok, vedrai un elenco di repository. Ora, proprio come un vero sviluppatore, devi scorrere l'elenco e trovare il progetto che ti interessa. Per il nostro lab, facciamo finta di cercare il repository quickpoll che abbiamo clonato in precedenza. Per questa parte non è necessario un comando: basta leggere l'output dell'ultimo passaggio e trovare il repository.
Attività 3: elenca le richieste di pull aperte
Ora che abbiamo identificato il repository di destinazione, vediamo cosa sta succedendo. Esistono richieste di pull aperte? Chiediamo:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini utilizzerà lo strumento github.list_pull_requests, filtrando in base allo stato open. Verranno quindi elencate tutte le richieste di pull aperte, con il numero, il titolo e l'autore. Questa è la tua visualizzazione istantanea dello sviluppo attivo del progetto. Puoi provare con un repository a cui contribuisci attivamente e controllare i risultati.

Attività 4: esamina una richiesta di pull
Supponiamo che nell'elenco ci sia una PR interessante. Vogliamo saperne di più. Vogliamo vedere la descrizione e quali file sono stati modificati. Scegli un numero di PR dall'elenco (se non ce ne sono, puoi saltare questo passaggio, ma immaginiamo che ce ne sia uno).
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
Questo è un ottimo esempio di attività in più passaggi per Gemini. Innanzitutto, probabilmente utilizzerà github.get_pull_request per recuperare i dettagli principali: titolo, corpo, autore e così via. Poi, per ottenere le modifiche al file, utilizzerà un secondo strumento, github.get_pull_request_files. Quindi, combina tutte queste informazioni in un riepilogo chiaro e conciso. Hai appena esaminato una PR senza uscire dal terminale. Non è fantastico?
9. Dal PRD al commit iniziale

Hai imparato a esplorare, creare e testare. Ora mettiamo tutto insieme in uno scenario reale. Questo è il momento in cui trasformiamo un piano in un prodotto. Partiremo da un documento dei requisiti di prodotto (PRD) fino al nostro primo commit. Creiamo qualcosa di straordinario.
Obiettivo: simulare un'attività di sviluppo reale dall'inizio alla fine, combinando il contesto locale e remoto.
Scenario: ti è stata assegnata una nuova funzionalità. I requisiti ti aspettano in un file PRD all'interno del repository GitHub del progetto.
Attività 1: comprensione - leggi il PRD
Questo è il passaggio più importante. Prima ancora di pensare di scrivere una sola riga di codice, devi assolutamente comprendere il piano. I requisiti della nostra nuova funzionalità si trovano nel file prd/NEW_FEATURE.md. Apriamolo e vediamo cosa c'è dentro.
explain the requirements mentioned in prd/NEW_FEATURE.md
Gemini CLI utilizzerà read_file per mostrare i contenuti del PRD. Esplora con noi Verrà descritta la nuova funzionalità: un pulsante Aggiorna che consente agli utenti di aggiornare manualmente l'elenco dei sondaggi attivi. Consulta sempre prima il progetto.

Attività 2: codice - Traduci i requisiti in realtà
Questo è il momento magico. Prenderemo i requisiti dal PRD e chiederemo a Gemini di scrivere il codice per noi. Diamo istruzioni specifiche e diciamo esattamente cosa vogliamo.
Implement the changes as per the PRD
Gemini CLI entrerà in azione e, dopo un attimo, vedrai un output simile a questo. Il nostro nuovo codice ora ha una casa accogliente.

Attività 3: verifica le modifiche
Abbiamo creato un nuovo file con un nuovo codice. L'ultimo passaggio di questo lab consiste nell'eseguire il deployment della modifica in Cloud Run e verificarla.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
Nota come la richiesta abbia fornito ulteriori dettagli, come il nome del servizio Cloud Run esistente e la relativa regione di deployment. Essere specifici aiuta a risparmiare tempo, anche se Gemini CLI ti chiederà sempre i dettagli mancanti se li ometti.
Se il servizio Cloud Run aggiornato rileva un errore, chiedi semplicemente a Gemini CLI di eseguire il debug e correggere il codice. Ricorda, è il tuo compagno superpotente.
10. Complimenti

E con questo è tutto. Hai appena completato un ciclo di sviluppo completo. Sei passato da un documento dei requisiti a una nuova funzionalità, pronta per essere eseguita e inviata. Hai combinato contesto locale, contesto remoto, operazioni del file system e generazione di codice. Non sei solo uno sviluppatore, ma un architetto cloud super produttivo. Complimenti!