Especificar dependencias

Puedes usar cualquier paquete compatible con linux/amd64 con instancias que se ejecuten en el entorno flexible de App Engine. Estas instrucciones suponen que utilizas el comando go get para obtener los paquetes directamente desde repositorios compatibles, como GitHub, Bitbucket, LaunchPad y otros.

A partir de la versión 1.22 de Go y posteriores, haz lo siguiente:

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

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

Declara y administra dependencias

Las aplicaciones de Go se organizan en paquetes que replican la estructura de directorios de tus archivos fuente. Cuando utilizas una instrucción import, se interpretan las rutas relativas en import. Las rutas de importación válidas son rutas completamente calificadas que son relativas al subdirectorio src de todos los directorios que se especifican en tu GOPATH.

Por ejemplo, considera una app de ejemplo en la que defines lo siguiente:

  • Módulo GOPATH:

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

    import "foo/bar"
    
  • Gloud CLI 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 tus paquetes en GOPATH, debes tener cuidado de no colocar tu código fuente dentro del directorio de la aplicación, en el que se encuentra el archivo app.yaml. Si esto sucede, pueden surgir problemas sutiles, porque un paquete podría cargarse dos veces, una vez en la ruta relativa al directorio de un servicio y una vez más en la ruta completamente calificada. Para evitar problemas, la CLI de gcloud analizará tanto el directorio de tu aplicación como GOPATH y, luego, informará un error si se detecta un conflicto.

Para obtener los mejores resultados, te recomendamos lo siguiente:

  • Crea un directorio separado en el directorio de la aplicación para cada servicio.
  • El directorio de cada servicio debe contener el archivo app.yaml del servicio y uno o más 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 la aplicación y contener todas las dependencias que importa tu aplicación.

Descarga los paquetes obligatorios

Puedes usar el comando go get para descargar paquetes. Por ejemplo, para descargar packagename desde el my_repo de GitHub, ejecuta lo siguiente:

go get github.com/my_repo/packagename

Realiza la implementación en App Engine

A fin de implementar tu aplicación en App Engine, debes implementar las bibliotecas que tu aplicación requiere junto con el código de la aplicación. Para obtener más información, consulta Implementa y prueba tu aplicación.