Esegui il deployment dal codice sorgente

Questa pagina descrive come deploy di nuovi servizi e nuove revisioni in Cloud Run direttamente dal codice sorgente utilizzando un singolo comando gcloud CLI, gcloud run deploy con il flag --source. Per una procedura dettagliata di esempio del deployment di un servizio Hello World, consulta Eseguire il deployment dalle guide rapide dall'origine.

Dietro le quinte, questo comando utilizza i buildpack di Google Cloud e Cloud Build per creare automaticamente immagini container dal codice sorgente senza dover installare Docker sulla macchina o configurare buildpack o Cloud Build. In altre parole, il singolo comando descritto sopra fa ciò che altrimenti richiederebbe i comandi gcloud builds submit e gcloud run deploy.

Tieni presente che i deployment di origine utilizzano Artifact Registry per archiviare i container creati. Se il tuo progetto non dispone già di un repository Artifact Registry con il nome cloud-run-source-deploy nella regione in cui stai eseguendo il deployment, questa funzionalità crea automaticamente un repository Artifact Registry con il nome cloud-run-source-deploy.

Se un Dockerfile è presente nella directory del codice sorgente, il codice sorgente caricato viene creato utilizzando quel Dockerfile. Se nella directory del codice sorgente non è presente un Dockerfile, i buildpack di Google Cloud rilevano automaticamente il linguaggio in uso e recupera le dipendenze del codice per creare un'immagine container pronta per la produzione, utilizzando un'immagine di base sicura gestita da Google. Ogni volta che esegui il deployment, eventuali correzioni di sicurezza necessarie vengono rilevate automaticamente dall'immagine di base.

Lingue supportate

Oltre alle origini con un Dockerfile, il deployment dall'origine supporta i seguenti linguaggi:

Scopri di più sulle versioni in linguaggio supportate dai buildpack di Google Cloud.

Limitazioni di questa funzionalità

  • Il deployment dall'origine utilizza Artifact Registry, pertanto questa funzionalità è disponibile solo nelle regioni supportate da Artifact Registry.
  • Il deployment dall'origine utilizzando gcloud run deploy --source è una funzionalità molto utile e non consente la personalizzazione completa della build. Per un maggiore controllo, crea l'immagine container utilizzando Cloud Build, ad esempio gcloud builds submit, quindi esegui il deployment dell'immagine container utilizzando, ad esempio, gcloud run deploy --image.
  • Il deployment dall'origine con buildpack di Google Cloud imposta la data di ultima modifica dei file di origine al 1° gennaio 1980. Questo è il comportamento predefinito dei buildpack ed è progettato per supportare le build riproducibili. A seconda del framework di linguaggio, questo può influire sulla memorizzazione nella cache lato browser dei file statici. Se la tua applicazione è interessata da questo problema, Google consiglia di disabilitare le intestazioni HTTP etag e Last-Modified nell'applicazione.
  • Il deployment dall'origine con i buildpack di Google Cloud utilizza sempre gcr.io/buildpacks/builder:latest. Se la lingua o la configurazione del sistema operativo che preferisci non sono disponibili in latest, utilizza un builder specifico per creare un'immagine dell'applicazione utilizzando il tuo builder preferito.
  • Puoi eseguire il deployment del tuo servizio dall'origine utilizzando Kotlin e altri linguaggi JVM, ad esempio Java. Il linguaggio utilizzato deve essere conforme alle seguenti regole:

    • Puoi creare l'applicazione utilizzando Maven o Gradle.
    • Il file di compilazione contiene tutti i plug-in necessari per le classi di prodotto.

Prima di iniziare

  • Assicurati di aver configurato un nuovo progetto per Cloud Run come descritto nella pagina di setup.
  • Se ti trovi in un criterio dell'organizzazione che limita le chiamate non autenticate per il tuo progetto, dovrai accedere al servizio di cui hai eseguito il deployment come descritto in Test dei servizi privati.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment dei servizi Cloud Run dall'origine, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto:

Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run si interfaccia con le API Google Cloud, ad esempio le librerie client di Cloud, consulta la guida alla configurazione delle identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Deployment in corso…

Per eseguire il deployment dal codice sorgente:

  1. Passa alla directory di origine. Tieni presente che la directory di origine non richiede un Dockerfile, ma verrà utilizzato un Dockerfile presente.

  2. Crea ed esegui il deployment della tua applicazione:

    gcloud run deploy SERVICE --source .

    Sostituisci SERVICE con il nome che preferisci per il tuo servizio.

    Rispondere a eventuali richieste di installazione delle API richieste rispondendo y quando richiesto. Devi eseguire questa operazione una sola volta per un progetto. Rispondi ad altri richieste indicando la piattaforma e la regione, se non hai configurato valori predefiniti per queste ultime, come descritto nella pagina di setup.

  3. Attendi il completamento della build e del deployment. Al termine, viene visualizzato un messaggio simile a questo:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    Al momento del deployment, tieni presente che questa revisione del servizio gestisce il 100% del traffico.

Automatizzare la creazione dall'origine

Come best practice per evitare modifiche senza controllo delle versioni nell'origine locale, Google consiglia di eseguire automaticamente il deployment quando viene eseguito il push delle modifiche al tuo repository Git. Per semplificare l'operazione, puoi connettere e configurare il deployment continuo nel tuo servizio Cloud Run. Collegando i tuoi repository GitHub a Cloud Run, puoi configurare build ed eseguire il deployment dei tuoi repository senza scrivere Dockerfile o file di build.

Per configurare build automatiche, imposta l'automazione come descritto nella pagina delle build continue, assicurati di scegliere l'opzione per creare l'origine con Buildpacks.

Passaggi successivi

Dopo aver eseguito il deployment di un nuovo servizio, puoi:

Puoi automatizzare le build e i deployment dei tuoi servizi Cloud Run utilizzando i trigger di Cloud Build: