Especificar dependencias en Go

Puedes especificar las dependencias de tu función de Cloud Run con un módulo de Go o un vendor directorio.

Especificar dependencias con módulos de Go

Para especificar las dependencias de las funciones de Cloud Run con un módulo de Go, debes incluirlas en un archivo go.mod. Cuando despliegues tu función, Go incorporará automáticamente las dependencias en tu archivo go.mod.

Para crear un archivo go.mod, consulta Gestionar dependencias en Go.

Functions Framework es una dependencia obligatoria para todas las funciones. Aunque Cloud Run Functions lo instala en tu nombre cuando se crea la función, te recomendamos que lo incluyas como dependencia explícita para mayor claridad.

Si tu función depende de dependencias privadas, te recomendamos que hagas una réplica de functions-framework en tu registro privado. Incluye functions-framework como dependencia de tu función para evitar instalar el paquete desde Internet.

Especificar dependencias con un directorio vendor

Cloud Run Functions también te permite incluir tus dependencias con un vendordirectorio. Usar un directorio de proveedores es útil si tu dependencia no está disponible a través de un gestor de dependencias o si el acceso a Internet del entorno de tus funciones de Cloud Run está restringido.

La mayoría de las veces, los directorios vendor se mantienen con un gestor de dependencias. Puedes usar el gestor de dependencias que quieras. Por ejemplo, puedes usar la función Modules de Go para crear un directorio vendor a partir de tu archivo go.mod.

Debes incluir Functions Framework para Go en tu directorio de proveedores. Para usar la cadena de herramientas de Go, sigue estos pasos:

  1. Añade la siguiente directiva al bloque de importación de tu código Go:

    _ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"
    
  2. Actualiza el archivo go.mod para incluir el nuevo paquete importado:

    go mod tidy
    
  3. Crea un directorio vendor con el contenido del archivo go.mod:

    go mod vendor
    

Versiones de Go anteriores a la 1.16

En las versiones de Go anteriores a la 1.16, si tienes un archivo go.mod y un directorio vendor, el directorio vendor se ignorará al implementar la función. Para asegurarse de que se respeta su directorio de proveedores, utilice un archivo .gcloudignore para evitar subir sus archivos go.mod y go.sum:

  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
    

Usar dependencias privadas

Si las dependencias de tu función se alojan en un repositorio que no es de acceso público, debes usar un directorio vendor para obtener las dependencias antes de implementar la función. Si tienes pensado usar un archivo go.mod, consulta las instrucciones anteriores para evitar posibles conflictos entre el archivo go.mod y el directorio vendor.