Spécifier des dépendances

Vous pouvez utiliser n'importe quel package compatible avec linux/amd64 pour des instances exécutées dans l'environnement flexible App Engine. Ces instructions supposent que vous utilisez la commande go get pour obtenir les packages directement à partir des dépôts acceptés (GitHub, Bitbucket, LaunchPad, etc.).

À partir de la version 1.22 de Go et versions ultérieures :

  • Vous ne pouvez pas utiliser go get en dehors d'un module dans l'ancien mode GOPATH (GO111MODULE=off). Pour en savoir plus, consultez la section Outils.

  • 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. Pour plus d'informations sur les versions de Go et sur la gestion des dépendances pour les répertoires vendor, consultez la section GOPATH et modules.

Déclarer et gérer les dépendances

Les applications Go sont organisées sous forme de packages qui reflètent la structure de répertoires de vos fichiers sources. Lorsque vous utilisez une instruction d'importation, les chemins relatifs de l'importation sont interprétés. Les chemins d'importation valides sont des chemins d'accès complets au sous-répertoire srcde tous les répertoires spécifiés dans votre GOPATH.

Prenons l'exemple d'une application dans laquelle vous définissez les éléments suivants:

  • Module GOPATH :

     export GOPATH=/home/fred/go.
    
  • Fichier src1-1.go :

    import "foo/bar"
    
  • gcloud CLI recherche le package foo/bar à l'emplacement /home/fred/go/src/foo/bar lorsque vous exécutez ou déployez l'application.

Si vous incluez les sources de votre package dans GOPATH, veillez à ne pas placer votre code source dans le répertoire de votre application où se trouve le fichier app.yaml. Si cela se produit, vous pourriez rencontrer des problèmes subtils car un package pourrait alors être chargé deux fois, une première fois pour le chemin relatif par rapport au répertoire d'un service et une seconde fois pour le chemin complet. Pour éviter tout problème de ce type, gcloud CLI analyse à la fois le répertoire de votre application et GOPATH, puis renvoie une erreur en cas de conflit.

Pour des résultats optimaux, nous vous recommandons de suivre les conseils ci-dessous :

  • Créez un répertoire distinct dans le répertoire de votre application pour chaque service.
  • Le dossier de chaque service doit contenir un fichier app.yaml du service, et un ou plusieurs fichiers .go.
  • N'incluez aucun sous-répertoire dans le répertoire d'un service.
  • Votre GOPATH doit spécifier un répertoire qui se trouve en dehors du répertoire de votre application et doit contenir toutes les dépendances importées par votre application.

Télécharger les packages requis

Vous pouvez utiliser la commande go get pour télécharger des packages. Par exemple, pour télécharger packagename à partir de my_repo sur GitHub :

go get github.com/my_repo/packagename

Déployer l'application sur App Engine

Pour déployer votre application sur App Engine, vous devez déployer les bibliothèques requises par votre application avec votre code d'application. Pour en savoir plus, consultez la page Tester et déployer votre application.