Il runtime di Go

Il runtime Go è lo stack software responsabile dell'installazione del codice dell'applicazione e delle dipendenze, nonché dell'esecuzione dell'applicazione nell'ambiente flessibile.

Versioni di Go

Go 1.27 utilizza i buildpack. Per l'elenco completo delle versioni di Go supportate e della versione di Ubuntu corrispondente, consulta la pianificazione del supporto del runtime.

Per utilizzare una versione di Go supportata, devi:

  • Installare gcloud CLI versione 420.0.0 o successive. Puoi aggiornare i tuoi strumenti CLI eseguendo il gcloud components update comando. Per visualizzare la versione installata, puoi eseguire il gcloud version comando.

  • Go consiglia di utilizzare un file go.mod per la gestione delle dipendenze. Per installare le dipendenze durante il deployment, includi un file go.mod nella stessa cartella del file app.yaml.

    Ad esempio, la struttura delle cartelle dell'app con go.mod deve rappresentare:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Includi le impostazioni runtime_config e operating_system nel file app.yaml per specificare un sistema operativo.

  • Facoltativamente, puoi specificare una versione di runtime includendo l'impostazione runtime_version in app.yaml. Per impostazione predefinita, se l'impostazione runtime_version non è specificata, viene utilizzata l'ultima versione di Go.

Esempi

  • Per specificare Go 1.27 su Ubuntu 24:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu24"
        runtime_version: "1.27"
    
  • Per specificare l'ultima versione di Go supportata su Ubuntu 24:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu24"
    

L'app utilizza l'ultima release stabile della versione specificata nel file app.yaml. App Engine esegue automaticamente l'aggiornamento alle nuove revisioni delle patch, ma non esegue automaticamente l'aggiornamento della versione principale.

Ad esempio, l'applicazione potrebbe essere sottoposta a deployment in Go 1.18.10 e in seguito potrebbe essere aggiornata automaticamente a Go 1.18.11, ma non verrà aggiornata automaticamente alla versione principale Go 1.19.

La scelta di Go 1.27 nel file app.yaml comporta l'utilizzo dell'ultima versione patch di Go 1.27 disponibile.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu24"
      runtime_version: "1.27"

Per ulteriori informazioni, consulta il riferimento app.yaml.

Versioni di runtime precedenti

Per utilizzare Go versione 1.15 e precedenti, specifica una versione in runtime impostazione utilizzando il go1.x formato nel tuo app.yaml file. Ad esempio:

  runtime: go1.14
  env: flex

Se non viene specificata una versione, verrà selezionata automaticamente la versione predefinita di go1.11.

L'app utilizza l'ultima release stabile della versione specificata nel file app.yaml. App Engine esegue automaticamente l'aggiornamento alle nuove revisioni delle patch, ma non esegue automaticamente l'aggiornamento della versione principale.

Ad esempio, l'applicazione potrebbe essere sottoposta a deployment in Go 1.14.10 e in seguito potrebbe essere aggiornata automaticamente a Go 1.14.11, ma non verrà aggiornata automaticamente alla versione principale Go 1.15.

La scelta della versione di runtime Go go1.15 nel file app.yaml comporta l'utilizzo dell'ultima versione di 1.15 disponibile, ad esempio 1.15.15.

  runtime: go1.15
  env: flex

Supporto di altri runtime Go

Se devi utilizzare una versione di Go non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di Go di cui hai bisogno.

Per le immagini di base fornite da Google o immagini di base Docker Go, consulta Creare runtime personalizzati.

Importare pacchetti

Il codice viene compilato quando esegui il deployment dell'app in App Engine. Quando esegui il comando di deployment, le dipendenze dell'app vengono prima raccolte dal tuo GOPATH locale e poi vengono inviate al server di build. Eventuali dipendenze mancanti, ad esempio librerie di terze parti, comportano errori di build.

Per evitare errori di build e assicurarti che tutte le dipendenze dell'app vengano sottoposte a deployment con il codice, devi testare l'app localmente prima di eseguirne il deployment it.

Estendere il runtime

Per istruzioni su come estendere e personalizzare il runtime Go, consulta il builder del runtime Go su GitHub.

Server di metadati

Ogni istanza dell'applicazione può utilizzare il server dei metadati di Compute Engine per eseguire query sulle informazioni sull'istanza, inclusi nome host, indirizzo IP esterno, ID istanza, metadati personalizzati e informazioni sull'account di servizio. App Engine non consente di impostare metadati personalizzati per ogni istanza, ma puoi impostare metadati personalizzati a livello di progetto e leggerli dalle istanze di App Engine e Compute Engine.

Utilizza il cloud.google.com/go/compute/metadata pacchetto per accedere al server dei metadati.