Implementa en App Engine

En esta página, se explica cómo implementar aplicaciones en App Engine con Cloud Build. Si estás dando los primeros pasos en Cloud Build, lee primero las guías de inicio rápido y la descripción general de la configuración de compilación.

App Engine es una plataforma sin servidores completamente administrada para desarrollar y alojar aplicaciones web a gran escala. Para obtener más información sobre App Engine, lee la Documentación de App Engine.

Antes de comenzar

Permisos de IAM obligatorios

Otorga la función Administrador de App Engine y Usuario de cuenta de servicio a la cuenta de servicio de Cloud Build:

  1. Abre la página Configuración de Cloud Build:

    Abrir la página Configuración (Settings) de Cloud Build

  2. Configura el estado de la función Administrador de App Engine y el Usuario de cuenta de servicio en Habilitado.

Configura la implementación

Cloud Build permite usar cualquier imagen de contenedor disponible a nivel público para ejecutar tareas. Para ello, especifica la imagen en una compilación step en el archivo de configuración de Cloud Build.

App Engine proporciona el comando gcloud app deploy, que compila una imagen con el código fuente y la implementa en App Engine. Puedes usar la imagen de cloud-sdk como un paso de compilación en tu archivo de configuración para invocar los comandos de gcloud dentro de la imagen. Los argumentos que se pasan a este paso de compilación se pasan directamente a la herramienta de gcloud, lo que te permite ejecutar cualquier comando de gcloud en esta imagen.

Para implementar una aplicación en App Engine, sigue estos pasos:

  1. Crea un archivo de configuración de Cloud Build con el nombre cloudbuild.yaml o cloudbuild.json.

  2. En el archivo de configuración, haz lo siguiente:

    • Agrega un campo name para especificar el paso de compilación de cloud-sdk.
    • Agrega un campo entrypoint para usar la herramienta de bash cuando se invoca a cloud-sdk.
    • En el campo args, invoca el comando gcloud app deploy y configura timeout para que App Engine la use cuando invoque a Cloud Build. Esto es necesario porque las compilaciones y los pasos de compilación de Cloud Build tienen un tiempo de espera predeterminado de 10 minutos y las implementaciones de App Engine pueden tardar más en completarse. Si especificas un tiempo de espera mayor, te aseguras de que la compilación no agote el tiempo de espera si gcloud app deploy tarda más de 10 minutos en completarse.

      Errores de tiempo de espera cuando se usa el entorno estándar de App Engine: Puedes configurar tiempos de espera como se describe aquí solo cuando usas el entorno flexible de App Engine. El entorno estándar de App Engine no permite configurar el tiempo de espera de compilación. Si usas Cloud Build para implementar en el entorno estándar de App Engine y tu compilación falla con un error de tiempo de espera, considera usar el entorno flexible de App Engine o Cloud Run en lugar del entorno estándar de App Engine.

    • Agrega un valor de compilación de timeout de más de 10 minutos.

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  3. Inicia la compilación, en la que SOURCE_DIRECTORY es la ruta de acceso o la URL del código fuente:

     gcloud builds submit SOURCE_DIRECTORY
    

Implementación continua

Puedes automatizar la implementación de tu software en App Engine mediante la creación de activadores de Cloud Build. Puedes configurar tus activadores para compilar y, luego, implementar imágenes cada vez que actualices tu código fuente.

Para automatizar tu implementación en App Engine, haz lo siguiente:

  1. En tu repositorio, agrega un archivo de configuración con pasos para invocar el comando gcloud app deploy:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  2. Crea un activador de compilación con el archivo de configuración generado en el paso anterior:

    1. Abre la página Activadores en Google Cloud Console:

      Abrir la página Activadores

    2. Selecciona el proyecto en el menú desplegable del selector de proyectos, que se ubica en la parte superior de la página.

    3. Haz clic en Abrir.

    4. Haz clic en Crear activador.

      En la página Crear activador, ingresa la siguiente configuración:

      1. Ingresa un nombre para el activador.

      2. Selecciona el evento del repositorio para iniciar el activador.

      3. Selecciona el repositorio que contenga el código fuente y el archivo de configuración de compilación.

      4. Especifica la regex de la rama o el nombre de la etiqueta que iniciará el activador.

      5. Configuración: Elige el archivo de configuración de compilación que creaste anteriormente.

    5. Haz clic en Crear para guardar el activador de compilación.

Cada vez que envíes código nuevo a tu repositorio, comenzarás a compilar y, luego, implementar en App Engine de forma automática.

Para obtener más información sobre cómo crear activadores de Cloud Build, consulta Crea y administra activadores de compilación.

¿Qué sigue?