Automatización de su implementación

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

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

Obtén más información sobre los recursos que se usan para la automatización de lanzamientos 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:

  • Cómo promocionar una versión automáticamente

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

  • Promociona una versión según un programa

    Puedes configurar Cloud Deploy para que promocione tu versión según un programa 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 usan una estrategia de implementación Canary.

  • Cómo reparar un lanzamiento

    Puedes configurar Cloud Deploy para que reintente automáticamente un lanzamiento con errores. Esto incluye volver a intentar el lanzamiento una cantidad especificada de veces y revertir automáticamente si esa cantidad de reintentos falla.

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 publicación para la que se usa. No puedes compartir una automatización en varias canalizaciones de publicación.

El siguiente es el proceso general para la configuración y ejecución de una automatización:

  1. Configuras una automatización.

    Esta automatización está asociada a una canalización de publicación.

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

    Esto crea el recurso de Automation.

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

  4. El lanzamiento se realiza correctamente en, al menos, un objetivo o falla.

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

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

    2. Si hay un tiempo 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 el lanzamiento se realiza correctamente, la automatización es advanceRolloutRule y el objetivo usa una estrategia de implementación de versiones canary, ocurrirá lo siguiente:

    1. La ejecución espera a 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 ocurre cuando la fase de origen es IN_PROGRESS, sujeto al tiempo wait.

    2. Si hay un tiempo 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 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 el lanzamiento falla y hay una automatización con una regla repairRollout, haz lo siguiente:

    1. Se vuelve a intentar el lanzamiento después del tiempo de wait configurado, si corresponde.

      Si se configuran fases o trabajos específicos en esta regla repairRollout, solo se vuelven a intentar esas fases o trabajos. La configuración predeterminada, si no se especifican trabajos ni fases, es volver a intentar todas las fases y los trabajos del lanzamiento.

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

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

    3. Los reintentos se repiten hasta que Cloud Deploy agote el reintento attempts.

      Si cada intento falla y se agotan los attempts, falla el lanzamiento.

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

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

Recursos de automatización

Existen dos recursos de Cloud Deploy que se usan específicamente para la automatización:

  • Automatización

    Un Automation es un recurso secundario de una canalización de entrega y, además, incluye la siguiente información:

    • Es un puntero al objetivo o los objetivos para los que se usa la automatización.
    • Son las reglas que rigen lo que hace la automatización y cómo lo hace.

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

    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 publicación y un objetivo o varios con una o más reglas de automatización.

  • Ejecución de automatización

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

    La ejecución de 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 necesarios 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 más permisos 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, incluso con 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 (Configura la automatización) y Configura 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 la regla 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 aún se generan los registros de la plataforma.

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

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

  3. Los registros de la plataforma se siguen generando cuando se crea una instancia de la automatización, incluso si está suspendida. Puedes usar esto para probar y depurar la automatización sin afectar la canalización de entrega.

¿Qué sigue?