Automatización de su implementación

En este documento, se proporciona una descripción general de la automatización de la implementación.

Puedes configurar Cloud Deploy para que realice automáticamente tareas relacionadas con la versión y el lanzamiento para una canalización de entrega determinada. Estas tareas incluyen la promoción de la versión y el avance de la fase.

Obtén más información sobre los recursos que se usan para la automatización de versiones en Cloud Deploy.

Obtén más información para configurar las reglas que definen cómo funcionan estas automatizaciones.

Acciones que puedes automatizar

En Cloud Deploy, puedes automatizar las siguientes actividades de lanzamiento y lanzamiento progresivo:

  • Promociona un lanzamiento automáticamente

    Puedes configurar Cloud Deploy para que promueva tu versión automáticamente cuando se realice correctamente el lanzamiento en un destino. Por ejemplo, si tienes tres destinos, dev, staging y prod, puedes configurar una automatización de modo que la versión se promueva a prod, sin más interacción humana, tras una implementación exitosa en staging. También puedes especificar un tiempo de demora.

  • Cómo promocionar un lanzamiento según un programa

    Puedes configurar Cloud Deploy para que promueva tu versión según un programa de cron.

  • Cómo adelantar un lanzamiento

    Puedes configurar Cloud Deploy para que avance una implementación de una fase a la siguiente, después de una implementación exitosa en el destino anterior. El avance de fase solo está disponible en los objetivos que utilizan una estrategia de implementación de versiones canary.

  • Cómo reparar un lanzamiento

    Puedes configurar Cloud Deploy para que reintente automáticamente una implementación fallida. Esto incluye reintentar el lanzamiento una cantidad específica de veces y revertirlo automáticamente si falla esa cantidad de reintentos.

Consulta Reglas de automatización para obtener más información sobre estas acciones y cómo configurarlas.

¿Cómo funciona la automatización?

Cada automatización está vinculada a la canalización de entrega para la que se usa. No puedes compartir una automatización en varias canalizaciones de entrega.

A continuación, se describe el proceso general para configurar y ejecutar una automatización:

  1. Configuras una automatización

    Esta automatización está asociada a un canal de entrega.

  2. Registras esa automatización con gcloud deploy apply.

    Esto crea el recurso de Automation.

  3. Para invocar la canalización de entrega asociada a esta automatización, debes crear una versión.

  4. La versión se lanza correctamente para al menos un destino o falla.

    Si el lanzamiento se realiza correctamente y la automatización es promoteReleaseRule, ocurrirá lo siguiente:

    1. La ejecución espera a que la implementación se realice correctamente en el destino de origen. El objetivo de la fuente es el selector.targets configurado para la automatización, no el AutomationRule.

    2. Si hay un tiempo de wait configurado, la ejecución también espera ese tiempo.

    3. La versión se promueve automáticamente al siguiente destino en la progresión de la canalización o a un destino específico, si se indica.

    Si la implementación se realiza correctamente, la automatización es advanceRolloutRule y el destino usa una estrategia de implementación de versiones canary, sucede lo siguiente:

    1. La ejecución espera la fase de origen identificada, si la hay.

      La propiedad sourcePhase es opcional y, si no se especifican fases de origen, cada fase del lanzamiento avanza automáticamente. El avance de fase automático se produce cuando la fase de origen es IN_PROGRESS, sujeto al tiempo de wait.

    2. Si hay un tiempo de wait configurado, la ejecución también espera ese tiempo.

      Cuando automatizas una implementación de versiones canary, usas este tiempo de espera para especificar la duración de cada fase de la versión canary.

    3. El lanzamiento avanza automáticamente de esa fase de origen a la siguiente fase del lanzamiento.

    4. Si hay una fase de origen adicional, se trata de la misma manera, incluido el mismo tiempo de espera, si corresponde.

    Si falla el lanzamiento y hay una automatización con una regla repairRollout, sucederá lo siguiente:

    1. Se vuelve a intentar la implementación después del tiempo de wait configurado, si corresponde.

      Si se configuran fases o trabajos específicos en esta regla repairRollout, solo se volverán a intentar esas fases o trabajos. El valor predeterminado, si no se especifican trabajos ni fases, es volver a intentar todas las fases y trabajos de la versión.

      Como los reintentos son opcionales, si tu automatización no está configurada para reintentar, este paso no se realizará.

    2. Si falla el primer reintento, la ejecución espera el tiempo wait configurado y, luego, vuelve a intentarlo.

    3. Los reintentos se repiten hasta que Cloud Deploy agota el attempts de reintentos.

      Si cada intento falla y se agotan los attempts, la versión falla.

      Durante los reintentos, el estado de la versión es IN_PROGRESS hasta que la versión se lanza correctamente o falla después del intento final. El estado de la fase es IN_PROGRESS durante los reintentos, pero FAILED después de cada falla en el lanzamiento.

    4. Si fallan todos los reintentos (o no se configuró ninguno), se crea un nuevo lanzamiento para revertir la versión exitosa más reciente en el destino.

Recursos de automatización

Existen dos recursos de Cloud Deploy que son específicos para la automatización:

  • Automatización

    Un Automation es un recurso secundario de una canalización de entrega y contiene la siguiente información:

    • Puntero al objetivo o los objetivos para los que se usa la automatización
    • Las reglas que rigen lo que hace la automatización y cómo lo hace

    La configuración del recurso Automation se describe en el documento Acerca del recurso Automation.

    Cuando ejecutas gcloud deploy apply en un archivo que incluye una configuración de automatización (kind: Automation), Cloud Deploy crea un recurso de automatización, que asocia una canalización de entrega y un destino o destinos con una o más reglas de automatización.

  • Ejecución de automatización

    El AutomationRun es una instancia de una automatización. Es un puntero a su recurso de Automation correspondiente, además de información sobre el lanzamiento que lo generó y otros metadatos.

    La ejecución de la automatización se crea cuando se activa una automatización.

Obtén más información sobre los recursos de automatización.

Reglas de automatización

Una regla de automatización define una acción que se puede realizar automáticamente en tu canalización de entrega, así como detalles sobre cómo se debe realizar la automatización.

Obtén más información sobre las reglas de automatización.

Roles y permisos de Identity and Access Management necesarios

Además de los permisos que necesitas para ejecutar cualquier canalización de entrega de Cloud Deploy y realizar las tareas que se automatizarán (como avanzar en un lanzamiento), hay varios permisos que se necesitan para realizar ciertas operaciones en los recursos Automation y AutomationRun:

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

Además de estos permisos, cada regla de automatización puede requerir permisos adicionales para realizar la operación automatizada. Consulta Configura reglas de automatización para conocer los permisos específicos que se necesitan por regla de automatización.

Consulta Roles y permisos de IAM para obtener más información, incluidos los roles de Cloud Deploy que incluyen estos permisos.

Crea una automatización

Puedes crear una automatización, lo que incluye usar cualquiera de las reglas de automatización disponibles, configurando una automatización y, luego, creando el recurso de automatización con gcloud deploy apply.

Consulta la siguiente sección (Configuración de la automatización) y Configuración de reglas de automatización.

Cómo configurar la automatización

Consulta el esquema del archivo de configuración para obtener detalles sobre cómo configurar el recurso Automation.

Configuración de reglas de automatización

Además de esta configuración de automatización, debes especificar reglas de automatización. La configuración es diferente para cada una de las reglas disponibles.

Consulta Cómo usar reglas de automatización para obtener descripciones de cada una de las reglas disponibles.

Suspende una automatización

Puedes suspender un recurso existente sin borrarlo. Esto puede ser útil para probar una automatización sin afectar la canalización de entrega. Cuando suspendes una automatización, esta no se ejecuta, pero se siguen generando registros de la plataforma.

  1. En la configuración de Automation, actualiza la propiedad suspended a true.

  2. Ejecuta gcloud deploy apply en ese archivo de configuración.

  3. Los registros de la plataforma se siguen generando cuando se crea la automatización, incluso si se suspende. Puedes usar esta opción para probar y depurar la automatización sin afectar la canalización de entrega.

¿Qué sigue?