Implementa desde el código fuente

En esta página, se describe cómo implementar servicios nuevos y revisiones nuevas en Cloud Run directamente desde el código fuente mediante un solo comando de la CLI de gcloud, gcloud run deploy, con la marca --source. Para ver una explicación de ejemplo de cómo implementar un servicio de Hello World, consulta Implementa desde guías de inicio rápido de origen.

Este comando usa los paquetes de compilación de Google Cloud y Cloud Build en segundo plano para compilar automáticamente imágenes de contenedor a partir del código fuente sin tener que instalar Docker en tu máquina ni configurar los paquetes de compilación o Cloud Build. Es decir, el comando único descrito anteriormente hace lo que requeriría el uso de los comandos gcloud builds submit y gcloud run deploy.

Ten en cuenta que las implementaciones de origen usan Artifact Registry para almacenar contenedores compilados. Si tu proyecto aún no tiene un repositorio de Artifact Registry con el nombre cloud-run-source-deploy en la región en la que realizas la implementación, esta función crea de forma automática un repositorio de Artifact Registry con el nombre cloud-run-source-deploy.

Si hay un Dockerfile en el directorio del código fuente, el código fuente subido se compila con ese Dockerfile. Si no hay ningún Dockerfile en el directorio del código fuente, los paquetes de compilación de Google Cloud detectan automáticamente el idioma que estás usando y recuperan las dependencias del código para crear una imagen de contenedor lista para la producción con una imagen base segura administrada por Google. (Cada vez que realizas una implementación, las correcciones de seguridad necesarias se obtienen automáticamente de la imagen base).

Lenguajes compatibles

Además de las fuentes con un Dockerfile, la implementación desde el origen admite los siguientes lenguajes:

  • Comienza a usarlo
  • Node.js
  • Python
  • Java
  • Kotlin
  • .NET
  • Ruby
  • PHP

Obtén más detalles sobre las versiones de lenguajes compatibles con los paquetes de compilación de Google Cloud.

Limitaciones de esta función

  • La implementación desde la fuente usa Artifact Registry, por lo que esta función solo está disponible en regiones compatibles con Artifact Registry.
  • La implementación desde el origen mediante gcloud run deploy --source es una característica práctica, y no permite la personalización completa de la compilación. Para obtener más control, compila la imagen del contenedor con Cloud Build, por ejemplo, con gcloud builds submit y, luego, implementa la imagen del contenedor con, por ejemplo, gcloud run deploy --image).
  • La implementación desde la fuente con los paquetes de compilación de Google Cloud establece la última fecha de modificación de los archivos de origen en el 1 de enero de 1980. Este es el comportamiento predeterminado de los paquetes de compilación y está diseñado para admitir compilaciones reproducibles. Según el framework del idioma, esto puede afectar el almacenamiento en caché del archivo estático del navegador. Si tu aplicación se ve afectada, Google recomienda inhabilitar los encabezados HTTP etag y Last-Modified en tu aplicación.
  • La implementación desde el origen con los paquetes de compilación de Google Cloud siempre usa gcr.io/buildpacks/builder:latest. Si tu lenguaje o configuración del SO preferido no están disponibles en latest, usa un compilador específico para crear una imagen de la aplicación con tu compilador preferido.

Antes de comenzar

  • Asegúrate de haber configurado un proyecto nuevo para Cloud Run, como se describe en la página de configuración.
  • Si estás bajo una política de la organización de restricción de dominios que restringe las invocaciones no autenticadas para tu proyecto, deberás acceder al servicio implementado como se describe en Prueba servicios privados.

Permisos necesarios para realizar una implementación

Si deseas implementar desde el origen, necesitas permisos para compilar, almacenar la imagen de contenedor compilada y realizar su implementación.

Debes tener UNA de las siguientes funciones:

Implementando

Para implementar a partir del código fuente:

  1. Cambia al directorio del código fuente. Ten en cuenta que el directorio del código fuente no requiere un Dockerfile, pero si hay uno, se usará.

  2. Compila e implementa tu aplicación:

    gcloud run deploy SERVICE --source .

    Reemplaza SERVICE por el nombre que deseas usar para el servicio.

    Responde a cualquier solicitud para instalar las API obligatorias. Para ello, responde y cuando se te solicite. Solo debes hacer esto una vez en un proyecto. Para responder a otras solicitudes, suministra la plataforma y la región si no configuraste los valores predeterminados de estas como se describe en la página de configuración.

  3. Espera a que se completen la compilación y la implementación. Cuando termines, se mostrará un mensaje similar a este:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    Tras la implementación, ten en cuenta que esta revisión del servicio entrega el 100% del tráfico.

Automatiza la compilación a partir del código fuente

Para evitar cambios sin versión en una fuente local, Google recomienda que implementes automáticamente cuando los cambios se envíen a tu repositorio de Git. Para facilitar esto, puedes conectar la implementación continua a tu servicio de Cloud Run y configurarla. Si conectas tus repositorios de GitHub a Cloud Run, puedes configurar compilaciones y, luego, implementar tus repositorios sin tener que escribir Dockerfiles o archivos de compilación.

Para configurar compilaciones automatizadas, configura la automatización como se describe en la página de compilaciones continuas, y asegúrate de elegir la opción para compilar fuentes con Buildpacks.

¿Qué sigue?

Después de implementar un servicio nuevo, puedes hacer lo siguiente:

Puedes automatizar las implementaciones y compilaciones de los servicios de Cloud Run mediante el uso de activadores de Cloud Build.