Compila una aplicación de Go

Especifica la versión de Go

De forma predeterminada, el paquete de compilación de Go usa la versión estable más reciente del compilador de Go. Si tu aplicación requiere una versión específica, puedes usar la variable de entorno GOOGLE_GO_VERSION a fin de proporcionar una restricción semver que se usará para seleccionar una versión de Go disponible.

pack build sample-go --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_GO_VERSION="17.x.x"

Marcas de compilación

El paquete de compilación de Go compila la fuente de tu aplicación en un ejecutable mediante el go build command. Las siguientes variables de entorno se pueden usar para configurar el comportamiento de compilación:

  • GOOGLE_BUILDABLE Especifica la ruta de acceso a una unidad compilable. Ejemplo: ./maindir para Go compilará el paquete con permisos de administrador en maindir.

  • GOOGLE_CLEAR_SOURCEOmite el código fuente de la imagen de la aplicación. Si la aplicación depende de archivos estáticos, como las plantillas de Go, configurar esta variable puede provocar que la aplicación se comporte mal. Ejemplo: true, True, 1 borrará la fuente.

  • GOOGLE_GOGCFLAGS Se pasó a go build y go run como valor -gcflags sin interpretación. Ejemplo: all=-N -l habilita el análisis de condiciones de carrera y cambia la forma en que se registran las rutas de archivos de origen en el objeto binario.

  • GOOGLE_GOLDFLAGS Se pasó a compilar y ejecutar como valor -ldflags sin interpretación. Ejemplo: -s -w se usa para quitar y reducir el tamaño del objeto binario.

Administra dependencias

Te recomendamos usar los módulos de Go para administrar las dependencias en la app de Go. El paquete de compilación de Go usa el comando go build para compilar tu app y, por lo tanto, coincide con el comportamiento de Go. Para asegurarte de que tu app use el modo compatible con el módulo, debes incluir un archivo go.mod en la raíz de tu aplicación.

Dependecias de vendoring

Mediante el vendoring, se copian los paquetes que usa tu app en el directorio de la aplicación en lugar de descargar módulos de sus fuentes durante el proceso de compilación. Go proporciona el comando de compilación de go para hacer el vendoring de los paquetes que necesita tu app en un directorio llamado vendor en el directorio raíz de tu app.

Configura el punto de entrada de la aplicación

De forma predeterminada, el paquete de compilación de Go configurará la entrada del contenedor de la aplicación e invocará el ejecutable producido main cuando se compiló la fuente de la aplicación. Si necesitas anular esto, puedes proporcionar un Procfile o pasar la variable de entorno GOOGLE_ENTRYPOINT.

Variables de entorno

El paquete de compilación de Go admite las siguientes variables de entorno para personalizar tu contenedor

GO

Consulta la documentación de Go sobre las variables de entorno.

Ejemplo: GOFLAGS=-flag=value pasa los comandos -flag=value a go.