Automatización del despliegue

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

Puede configurar Cloud Deploy para que realice automáticamente tareas relacionadas con las versiones y los lanzamientos de un flujo de trabajo de entrega determinado. Entre estas tareas se incluyen la promoción de la versión y el avance de fase.

Más información sobre los recursos que se usan para automatizar las versiones en Cloud Deploy.

Más información sobre cómo configurar las reglas que definen el funcionamiento de estas automatizaciones.

Acciones que puedes automatizar

En Cloud Deploy, puedes automatizar las siguientes actividades de lanzamiento e implementación:

  • Promocionar una versión automáticamente

    Puedes configurar Cloud Deploy para que promocione tu lanzamiento automáticamente cuando se haya implementado correctamente en 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, cuando se haya implementado correctamente en staging. También puedes especificar un tiempo de espera.

  • Promocionar un lanzamiento de forma programada

    Puedes configurar Cloud Deploy para que promocione tu lanzamiento según una programación cron.

  • Avanzar un lanzamiento

    Puedes configurar Cloud Deploy para que avance un lanzamiento de una fase a la siguiente después de que el lanzamiento se haya completado correctamente en el destino anterior. El avance de fase solo está disponible en los destinos que usan una estrategia de despliegue canary.

  • Reparar un lanzamiento

    Puedes configurar Cloud Deploy para que vuelva a intentar automáticamente un lanzamiento que haya fallado. Esto incluye volver a intentar el lanzamiento un número de veces especificado y volver automáticamente a la versión anterior si ese número de reintentos falla.

Para obtener más información sobre estas acciones y cómo configurarlas, consulta Reglas de automatización.

¿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 varios flujos de procesamiento de entrega.

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

  1. Configura una automatización

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

  2. Para registrar esa automatización, usa gcloud deploy apply.

    De esta forma, se crea el recurso de automatización.

  3. Para invocar la canalización de lanzamiento asociada a esta automatización, crea un lanzamiento.

  4. La implementación se completa correctamente en al menos un destino o falla.

    Si el lanzamiento se completa correctamente y la automatización está promoteReleaseRule:

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

    2. Si se ha configurado una hora wait, la ejecución también espera hasta esa hora.

    3. La versión se asciende automáticamente al siguiente destino de 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 está advanceRolloutRule y el destino usa una estrategia de implementación canary:

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

      La propiedad sourcePhase es opcional. Si no se especifican fases de origen, cada fase del lanzamiento se completará automáticamente. El avance automático de fase se produce cuando la fase de origen es IN_PROGRESS, sujeta a un tiempo de wait.

    2. Si se ha configurado una hora wait, la ejecución también espera hasta esa hora.

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

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

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

    Si la implementación falla y hay una automatización con una regla repairRollout:

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

      Si se configuran fases o tareas específicas en esta regla repairRollout, solo se volverán a intentar esas fases o tareas. Si no se especifican trabajos ni fases, se volverán a intentar todas las fases y los trabajos de la implementación.

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

    2. Si el primer reintento falla, la ejecución espera el tiempo wait configurado y 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 implementación falla.

      Durante los reintentos, el estado de la implementación es IN_PROGRESS hasta que la implementación se realiza correctamente o falla tras el último intento. El estado de la fase es IN_PROGRESS durante los reintentos, pero FAILED después de cada error de lanzamiento.

    4. Si se produce un error en todos los reintentos (o no se ha configurado ninguno), se crea un nuevo lanzamiento para revertir a la versión correcta más reciente en el destino.

Recursos de automatización

Hay 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 e incluye la siguiente información:

    • Un puntero al objetivo u 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 uno o varios destinos con una o varias reglas de automatización.

  • Ejecución de automatización

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

    La ejecución de la automatización se crea cuando se activa una automatizació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 llevar a cabo automáticamente en tu canal de distribución, así como detalles sobre cómo se debe realizar la automatización.

Más información sobre las reglas de automatización

Roles y permisos de Gestión de Identidades y Accesos necesarios

Además de los permisos que necesitas para ejecutar cualquier canal de distribución de Cloud Deploy y para realizar las tareas que se van a automatizar (como avanzar en un lanzamiento), hay varios permisos que se necesitan para realizar determinadas 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 llevar a cabo la operación automatizada. Consulta los permisos específicos necesarios para cada regla de automatización.

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

Crear una automatización

Puedes crear una automatización, incluidas las reglas de automatización disponibles, configurando una automatización y, a continuación, creando el recurso de automatización mediante gcloud deploy apply

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

Configurar la automatización

Para obtener más información sobre cómo configurar el recurso Automation, consulta el esquema del archivo de configuración.

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.

Consulte las descripciones de cada una de las reglas disponibles en el artículo Usar reglas de automatización.

Suspender una automatización

Puedes suspender un recurso sin eliminarlo. Esto puede ser útil para probar una automatización sin que afecte al flujo de procesamiento de la entrega. Cuando suspendes una automatización, esta no se ejecuta, pero se siguen generando registros de la plataforma.

  1. En la configuración Automation, cambia la propiedad suspended por true.

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

  3. Los registros de la plataforma se siguen generando cuando se crea una instancia de la automatización, aunque esté suspendida. Puedes usarlo para probar y depurar la automatización sin que afecte a la canalización de entrega.

Siguientes pasos