Environnement d'exécution Go

L'environnement d'exécution Go est la pile logicielle chargée d'installer le code et les dépendances de votre application, puis d'exécuter cette application dans l'environnement flexible.

Versions Go

Go 1.23 (preview) utilise des buildpacks. Pour obtenir la liste complète des versions de Go compatibles, ainsi que la version d'Ubuntu correspondante, consultez la page Programmation de la compatibilité avec l'environnement d'exécution.

Pour utiliser une version compatible de Go, vous devez:

  • Installez gcloud CLI version 420.0.0 ou ultérieure. Vous pouvez mettre à jour les outils de la CLI en exécutant la commande gcloud components update. Pour afficher la version installée, vous pouvez exécuter la commande gcloud version.

  • Go vous recommande d'utiliser un fichier go.mod pour gérer les dépendances. Pour installer des dépendances lors du déploiement, incluez un fichier go.mod dans le même dossier que le fichier app.yaml.

    Par exemple, la structure de dossiers de votre application avec go.mod doit représenter :

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Incluez les paramètres runtime_config et operating_system dans votre fichier app.yaml pour spécifier un système d'exploitation.

  • Facultatif : vous pouvez spécifier une version d'exécution en incluant le paramètre runtime_version dans votre fichier app.yaml. Par défaut, la dernière version de Go est utilisée si le paramètre runtime_version n'est pas spécifié.

Exemples

  • Pour spécifier Go 1.23 (bêta) sur Ubuntu 22:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • Pour spécifier la dernière version compatible de Go sur Ubuntu 22, procédez comme suit :

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

Votre application utilise la dernière version stable de la version spécifiée dans votre fichier app.yaml. App Engine se met automatiquement à jour en cas de nouvelles révisions correctives, mais pas en cas de nouvelle version majeure.

Par exemple, votre application peut être déployée sur Go 1.18.10 et faire ultérieurement l'objet d'une mise à jour automatique vers Go 1.18.11, mais elle ne sera pas automatiquement mise à jour vers la version majeure Go 1.19.

Si vous choisissez Go 1.23 (bêta) dans votre fichier app.yaml, la dernière version de patch de Go 1.23 (bêta) est disponible.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.23"

Pour plus d'informations, consultez la documentation de référence du fichier app.yaml.

Versions précédentes de l'environnement d'exécution

Pour utiliser la version 1.15 et les versions antérieures de Go, spécifiez une version dans le paramètre runtime au format go1.x dans votre fichier app.yaml. Exemple :

  runtime: go1.14
  env: flex

Si aucune version n'est spécifiée, la version par défaut de go1.11 est automatiquement sélectionnée.

Votre application utilise la dernière version stable de la version spécifiée dans votre fichier app.yaml. App Engine se met automatiquement à jour en cas de nouvelles révisions correctives, mais pas en cas de nouvelle version majeure.

Par exemple, votre application peut être déployée sur Go 1.14.10 et faire ultérieurement l'objet d'une mise à jour automatique vers Go 1.14.11, mais elle ne sera pas automatiquement mise à jour vers la version majeure Go 1.15.

Si vous choisissez la version go1.15 de l'environnement d'exécution Go dans votre fichier app.yaml, la dernière version 1.15 disponible est utilisée, par exemple la version 1.15.15.

  runtime: go1.15
  env: flex

Compatibilité avec d'autres environnements d'exécution Go

Si vous devez utiliser une version de Go non compatible, vous pouvez créer un environnement d'exécution personnalisé et sélectionner une image de base valide avec la version de Go dont vous avez besoin.

Pour les images de base fournies par Google ou les images de base Go Docker, consultez la section Créer des environnements d'exécution personnalisés.

Importer des packages

Votre code se compile lorsque vous déployez votre application sur App Engine. Lorsque vous exécutez la commande de déploiement, les dépendances de votre application sont d'abord collectées à partir de votre GOPATH local, puis elles sont toutes envoyées au serveur de construction. Toutes les dépendances manquantes, par exemple les bibliothèques tierces, entraînent des échecs de compilation.

Pour éviter les échecs de compilation et vous assurer que toutes les dépendances de votre application sont déployées avec votre code, vous devez tester votre application localement avant de la déployer.

Étendre l'environnement d'exécution

Pour obtenir des instructions sur la manière d'étendre et de personnaliser l'environnement d'exécution Go, consultez la page sur le compilateur de l'environnement d'exécution Go sur GitHub.

Serveur de métadonnées

Chaque instance de votre application peut utiliser le serveur de métadonnées Compute Engine pour demander des informations sur l'instance, y compris son nom d'hôte, son adresse IP externe, son ID d'instance, ses métadonnées personnalisées et ses informations de compte de service. App Engine ne vous permet pas de définir des métadonnées personnalisées pour chaque instance, mais vous pouvez définir des métadonnées personnalisées à l'échelle du projet et les lire à partir de vos instances App Engine et Compute Engine.

Utilisez le package cloud.google.com/go/compute/metadata pour accéder au serveur de métadonnées.