Configurar manualmente el despliegue continuo con Cloud Build

En las siguientes instrucciones se presupone que tienes un repositorio de Git con un archivo Dockerfile en su raíz.

Para automatizar el despliegue desde Git con Cloud Build, sigue estos pasos:

  1. Crea una configuración de Cloud Build que haga lo siguiente:

    • Crea la imagen del contenedor.
    • Envía la imagen a Container Registry (obsoleto).
    • Despliega una nueva revisión en el servicio de Cloud Run

    Para ello, añade un archivo llamado cloudbuild.yaml en la raíz de tu repositorio con este contenido:

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    Sustituir

    • [SERVICE-NAME] con el nombre del servicio de Cloud Run.
    • [REGION] por la región del servicio de Cloud Run que vas a desplegar.

    Cloud Build rellena la variable de sustitución $COMMIT_SHA cuando se activa desde un repositorio de Git.

  2. Asigna los roles Administrador de Cloud Run y Usuario de cuenta de servicio a la cuenta de servicio de Cloud Build:

    1. Abre la página de configuración de Cloud Build en la Google Cloud consola:

      Ir a la página de configuración de Cloud Build

    2. En el panel Permisos de cuenta de servicio, define el estado del rol Administrador de Cloud Run como Habilitar:

      Captura de pantalla de la página Permisos de cuenta de servicio

    3. Selecciona GRANT ACCESS TO ALL SERVICE ACCOUNTS (CONCEDER ACCESO A TODAS LAS CUENTAS DE SERVICIO) para asignar el rol Usuario de cuenta de servicio a todas las cuentas de servicio del proyecto en tu página.

  3. En el panel de navegación de la izquierda, haga clic en Activadores para abrir la página Activadores:

    Ir a la página Activadores

    1. Haz clic en Crear activador.
    2. En el campo Nombre, introduce un nombre para el activador.
    3. En Evento, selecciona el evento del repositorio para iniciar el activador.
    4. En Source (Origen), selecciona tu repositorio y el nombre de la rama o etiqueta que activará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar automáticamente, consulta Crear un activador de compilación.
    5. En Archivo de configuración de Cloud Build (yaml o json), selecciona Archivo de configuración de Cloud Build.
    6. En el campo Ubicación del archivo de configuración de Cloud Build, escribe cloudbuild.yaml después de /.
    7. Haz clic en Crear para guardar el activador de compilación.
  4. ¡Ya has terminado! A partir de ahora, cada vez que envíes contenido a tu repositorio, se invocará automáticamente una compilación y un despliegue en tu servicio de Cloud Run.

Despliegue continuo con un número mínimo de permisos de gestión de identidades y accesos

Cuando se despliega un contenedor en un servicio de Cloud Run, se ejecuta con la identidad de la cuenta de servicio de entorno de ejecución de ese servicio de Cloud Run. Como Cloud Build puede desplegar contenedores nuevos automáticamente, debe poder actuar como la cuenta de servicio de entorno de ejecución de tu servicio de Cloud Run.

Para conceder acceso limitado a Cloud Build para desplegar en un servicio de Cloud Run, sigue estos pasos:

Interfaz de usuario de la consola

  1. Ve a la página Cuentas de servicio de la Google Cloud consola:

    Ir a Cuentas de servicio

  2. Haz clic en la dirección de correo de la cuenta de servicio de entorno de ejecución de tu servicio de Cloud Run (de forma predeterminada, es PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. Haz clic en la pestaña Permisos.

  4. Haz clic en Conceder acceso.

  5. Introduce la cuenta de servicio de Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com).

  6. En el menú desplegable Seleccionar un rol, selecciona el rol Cuentas de servicio > Usuario de cuenta de servicio.

  7. Haz clic en Guardar.

gcloud

Usa el comando gcloud iam service-accounts add-iam-policy-binding:

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

Sustituye PROJECT_NUMBER por el ID numérico de tu proyecto.

Si usas Cloud Run con una identidad de servicio personalizada, sustituye PROJECT_NUMBER-compute@developer.gserviceaccount.com por la dirección de tu cuenta de servicio.

Para obtener más información, consulta Permisos de implementación.

Siguientes pasos