Configura manualmente la implementación continua con Cloud Build

En las siguientes instrucciones, se da por hecho que tienes un repositorio de Git con un Dockerfile en su raíz.

Para automatizar la implementación desde Git con Cloud Build, sigue estos pasos:

  1. Construye una configuración de Cloud Build que realice estas acciones:

    • Compile la imagen de contenedor
    • Envíe la imagen a Container Registry (obsoleto)
    • Implemente una revisión nueva al servicio de Cloud Run

    Para ello, agrega 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'
    

    Reemplazar

    • [SERVICE-NAME] por el nombre del servicio de Cloud Run
    • [REGION] por la región del servicio de Cloud Run que estás implementando

    Cloud Build propaga el uso de la variable de reemplazo $COMMIT_SHA cuando se activa desde un repositorio de Git.

  2. Otorga las funciones de 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 Storage en la consola de Google Cloud:

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

    2. En el panel Service account permissions (Permisos de la cuenta de servicio), establece el estado de la función de administrador de Cloud Run en Habilitar:

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

    3. Selecciona OTORGAR ACCESO A TODAS LAS CUENTAS DE SERVICIO para otorgar la función de usuario de cuenta de servicio en todas las cuentas de servicio del proyecto en tu página.

  3. Haz clic en Activadores, en el panel de navegación izquierdo, para abrir la página Activadores:

    Ir a la página Activadores

    1. Haz clic en Crear activador.
    2. En el campo Nombre, ingresa un nombre para el activador.
    3. En Evento, selecciona el evento del repositorio para iniciar el activador.
    4. En Fuente, selecciona el repositorio y el nombre de la rama o de la etiqueta que iniciará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar de manera automática, consulta Crea 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 terminaste. A partir de ahora, cada vez que hagas envíos al repositorio, se invocarán de forma automática una compilación y una implementación en tu servicio de Cloud Run.

Implementación continua con permisos de IAM mínimos

Cuando un contenedor se implementa en un servicio de Cloud Run, se ejecuta con la identidad de la cuenta de servicio del entorno de ejecución de este servicio de Cloud Run. Debido a que Cloud Build puede implementar contenedores nuevos de forma automática, Cloud Build debe poder actuar como la cuenta de servicio del entorno de ejecución del servicio de Cloud Run.

A fin de otorgar acceso limitado a Cloud Build para implementar en un servicio de Cloud Run, sigue estos pasos:

IU de Console

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

    Ir a Cuentas de servicio

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

  3. Haz clic en la pestaña Permisos.

  4. Haz clic en Grant access.

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

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

  7. Haz clic en Guardar.

Línea de comandos

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"

Reemplaza PROJECT_NUMBER por el ID del proyecto.

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

Consulta Permisos de implementación para obtener más información.

Próximos pasos