Especificar dependencias

Puedes usar cualquier paquete compatible con Linux/amd64 con instancias que se ejecuten en el entorno flexible de App Engine. En estas instrucciones se da por hecho que usas el comando go get para obtener los paquetes directamente de repositorios compatibles, como GitHub, Bitbucket o LaunchPad, entre otros.

A partir de la versión 1.22 de Go:

  • No puedes usar go get fuera de un módulo en el modo antiguo GOPATH (GO111MODULE=off). Para obtener más información, consulta Herramientas.

  • Go recomienda usar un archivo go.mod para gestionar las dependencias. Para instalar las dependencias durante la implementación, incluye un archivo go.mod en la misma carpeta que el archivo app.yaml. Para obtener más información sobre las versiones de Go y la gestión de dependencias de directorios de proveedores, consulta GOPATH y módulos.

Declarar y gestionar dependencias

Las aplicaciones Go se organizan en paquetes que reflejan la estructura de directorios de los archivos de origen. Cuando usas una instrucción de importación, se interpretan las rutas relativas de la importación. Las rutas de importación válidas son rutas completas que son relativas al subdirectorio src de todos los directorios especificados en tu GOPATH.

Por ejemplo, supongamos que tienes una aplicación en la que defines lo siguiente:

  • Módulo GOPATH:

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

    import "foo/bar"
    
  • La CLI de gcloud busca el paquete foo/bar en la ubicación /home/fred/go/src/foo/bar cuando ejecutas o implementas la aplicación.

Si incluyes las fuentes de tu paquete en GOPATH, debes tener cuidado de no colocar el código fuente en el directorio de tu aplicación donde se encuentra el archivo app.yaml. Si esto ocurre, pueden producirse problemas sutiles porque un paquete se puede cargar dos veces: una vez para la ruta relativa al directorio de un servicio y otra para la ruta completa. Para evitar problemas, la CLI de gcloud analizará tanto el directorio de tu aplicación como GOPATH y, a continuación, mostrará un error si se detecta un conflicto.

Para obtener los mejores resultados, te recomendamos lo siguiente:

  • Crea un directorio independiente en el directorio de tu aplicación para cada servicio.
  • El directorio de cada servicio debe contener el archivo app.yaml del servicio y uno o varios archivos .go.
  • No incluyas ningún subdirectorio en el directorio de un servicio.
  • Tu GOPATH debe especificar un directorio que esté fuera del directorio de tu aplicación y contener todas las dependencias que importe tu aplicación.

Descargar los paquetes necesarios

Puedes usar el comando go get para descargar paquetes. Por ejemplo, para descargar packagename desde GitHub my_repo, sigue estos pasos:

go get github.com/my_repo/packagename

Desplegar en App Engine

Para desplegar tu aplicación en App Engine, debes desplegar las bibliotecas que requiere tu aplicación junto con el código de la aplicación. Para obtener más información, consulta el artículo Probar y desplegar una aplicación.