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
yprod
, puedes configurar una automatización para que la versión se promocione aprod
, sin más interacción humana, después de una implementación correcta enstaging
. 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.
-
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.
-
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:
Configuras una automatización.
Esta automatización está asociada a una canalización de publicación.
Registras esa automatización con
gcloud deploy apply
.Esto crea el recurso de Automation.
Para invocar la canalización de entrega asociada con esta automatización, debes crear una versión.
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: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 elAutomationRule
.Si hay un tiempo
wait
configurado, la ejecución también espera ese tiempo.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: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 esIN_PROGRESS
, sujeto al tiempowait
.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.
El lanzamiento avanza automáticamente de esa fase de origen a la siguiente fase del lanzamiento.
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: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á.
Si el primer reintento falla, la ejecución espera el tiempo
wait
configurado y, luego, vuelve a intentarlo.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 esIN_PROGRESS
durante los reintentos, peroFAILED
después de cada falla de lanzamiento.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.
En la configuración de
Automation
, actualiza la propiedadsuspended
atrue
.Ejecuta
gcloud deploy apply
con ese archivo de configuración.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?
Prueba la guía de inicio rápido: Automatiza la creación de lanzamientos y el avance del lanzamiento.
Obtén más información sobre las reglas de automatización de Cloud Deploy.
Obtén más información sobre los recursos de automatización de Cloud Deploy.
Consulta la documentación del esquema del archivo de configuración para obtener detalles sobre los archivos de configuración de automatización.