Especifica dependencias en Go

Cloud Functions en Go debe proporcionar todas sus dependencias a través de los módulos de Go con un archivo go.mod o un directorio vendor. Tu función no puede especificar dependencias con ambos módulos de Go y un directorio vendor al mismo tiempo.

El entorno de ejecución de Go incluye una cantidad de paquetes de sistema. Si tu función usa una dependencia que requiere un paquete de sistema que no está en la lista, puedes solicitar un paquete.

Usa módulos de Go

Cloud Functions admite la funcionalidad experimental de módulos de Go, que te permite especificar dependencias en un archivo go.mod en la raíz de tu proyecto. Cuando implementas la función, las dependencias especificadas en el archivo go.mod se recuperarán y compilarán automáticamente.

El comportamiento de los módulos de Go difiere dependiendo de si desarrollas funciones dentro o fuera de GOPATH. Si deseas determinar si te encuentras dentro de , sigue estos pasos:

  1. Navega al directorio de tu proyecto.

  2. Encuentra tu GOPATH mediante la ejecución del comando:

    go env GOPATH
    

    Este da como resultado una línea similar a la siguiente:

    GOPATH=YOUR_GOPATH
    
  3. Encuentra tu directorio de trabajo actual con solo ejecutar lo siguiente:

    pwd
    

Si tu directorio de trabajo comienza con YOUR_GOPATH, estás dentro de GOPATH. En ese caso, genera tu archivo go.mod ejecutando los tres comandos siguientes:

export GO111MODULE=on
go mod init
go mod tidy

Si tu directorio de trabajo no comienza con YOUR_GOPATH, estás fuera de GOPATH. En ese caso, genera tu archivo go.mod ejecutando los siguientes comandos:

go mod init MODULE
go mod tidy

En el ejemplo anterior, MODULE es el nombre de tu módulo. Por ejemplo, el nombre del módulo podría ser example.com/myproject. El comando go detecta automáticamente el nombre del módulo cuando estás dentro de GOPATH.

Después de crear un archivo go.mod, puedes usar el comando go get para obtener dependencias y agregarlas automáticamente a tu proyecto. Por ejemplo:

go get DEPENDENCY

En el ejemplo anterior, DEPENDENCY es una dependencia que te recomendamos agregar a tu función. Por ejemplo, el comando go get cloud.google.com/go/storage agrega la biblioteca cliente de Cloud Storage a tu función.

Usa un directorio vendor

Cloud Functions también te permite incluir dependencias mediante un directorio vendor. La mayoría de las veces, los directorios vendor se mantienen con un administrador de dependencias. Puedes usar cualquier administrador de dependencias que prefieras. Por ejemplo, puedes utilizar la funcionalidad de los módulos de Go para crear un directorio vendor desde tu archivo go.mod.

Si tienes un archivo go.mod y un directorio vendor, el directorio vendor se ignorará cuando implementes tu función. Puedes usar un archivo .gcloudignore para evitar subir tus archivos go.mod y go.sum, en cuyo caso se respetará el contenido de tu directorio vendor:

  1. Crea un archivo .gcloudignore en la raíz del directorio de tu proyecto con el siguiente contenido:

    go.mod
    go.sum
    
    # Also ignore Git directories. Delete the following two lines if you want to
    # upload them.
    .git
    .gitignore
    
  2. Para crear un directorio vendor con el contenido de tu archivo go.mod, ejecuta el siguiente comando:

    go mod vendor
    

Usa dependencias privadas

Si las dependencias de tu función están alojadas en un repositorio al que no se puede acceder públicamente, debes usar un directorio vendor para obtener las dependencias antes de implementar la función. Si planeas usar un archivo go.mod, consulta las instrucciones anteriores para evitar conflictos entre el archivo go.mod y el directorio vendor.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions