Este documento descreve as regras de automatização, que são ações que podem ser tomadas automaticamente na sua pipeline de entrega. Por exemplo, pode configurar o pipeline de implementação para que a promoção para um alvo específico ocorra automaticamente, nas circunstâncias certas.
Só pode usar regras de automatização integradas no Cloud Deploy. As regras de automatização disponíveis estão listadas neste documento.
Regras de automatização disponíveis
As seguintes regras de automatização estão disponíveis no Cloud Deploy:
Regra | Descrição |
---|---|
timedPromoteReleaseRule
|
Promova automaticamente de um alvo para o seguinte
com base num horário cron. |
promoteReleaseRule
|
Promove automaticamente uma versão para o destino indicado após a conclusão bem-sucedida
implementação no alvo anterior na progressão. |
advanceRolloutRule
|
Avança automaticamente uma implementação a partir do
fase para a fase seguinte. |
repairRolloutRule
|
Tentar novamente automaticamente a tarefa ou as tarefas com falhas na implementação
especificado, e reverter se todas as novas tentativas falharem. |
Configure regras de automatização
A configuração de cada regra de automatização depende da regra específica. Esta secção descreve a configuração que todas as regras têm em comum, bem como a forma de configurar cada uma das regras disponíveis.
Cada regra de automatização é configurada como parte da configuração do recurso de automatização. Pode estar no mesmo ficheiro que a configuração do pipeline de entrega relevante (normalmente denominado clouddeploy.yaml
) ou em qualquer ficheiro que quiser. Saiba como configurar automatizações.
As secções seguintes descrevem a configuração específica das regras de automatização individuais. Consulte Automatize a sua implementação para configurar a automatização propriamente dita.
Configure uma regra de automatização timedPromoteReleaseRule
A regra timedPromoteReleaseRule
permite-lhe agendar quando promover um lançamento
a partir do alvo ou alvos selecionados para o alvo seguinte na progressão ou para
um alvo especificado. Quando configura uma automatização timedPromoteReleaseRule
,
especifica quando promover o lançamento com base num horário cron.
rules:
- timedPromoteReleaseRule:
name: "[RULE_NAME]"
schedule: "[CRON]"
timeZone: "[TIME_ZONE]"
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Onde:
[RULE_NAME]
É qualquer nome que queira dar a esta regra. Este nome tem de ser exclusivo no pipeline de entrega.
[CRON]
É o horário cron que especifica quando promover o lançamento. Use este horário para especificar a data e a hora em que quer promover o lançamento.
Este horário usa a sintaxe padrão
cron
:* * * * *
Neste horário…
- A primeira posição é o minuto (
0
-59
). - A segunda posição é a hora (
0
-23
). - A terceira posição é o dia do mês (
1
-31
). - A quarta posição é o mês (
1
-12
). - A quinta posição é o dia da semana (
0
-6
, de domingo a sábado)
Por exemplo, se a sua regra de promoção por tempo limitado incluir a seguinte programação:
0 9 * * 1
, o lançamento é promovido todas as segundas-feiras às 09:00.Também pode usar funcionalidades de programação cron padrão, como:
- Um intervalo (
0
-5
) - Uma lista (
1
,3
,5
) - Uma função de passo (por exemplo,
*/3
no campo das horas ativa a cada 3 horas)
- A primeira posição é o minuto (
[TIME_ZONE]
É o fuso horário que quer usar para agendar a promoção, no formato IANA.
[TO_TARGET]
É o
targetId
do destino para o qual a versão vai ser promovida ou@next
para promover automaticamente a versão para o destino seguinte após o destino especificado noselector.targets property
nesta configuração de automatização. Esta ação é opcional; o valor predefinido é@next
.[TO_PHASE]
É o nome da fase da fase que quer promover, por exemplo,
canary-25
oustable
. Esta propriedade é opcional. Se a omitir, o lançamento é promovido para a primeira fase no destino.
Configure uma regra de automatização promoteReleaseRule
A regra promoteReleaseRule
promove o lançamento após uma implementação bem-sucedida num alvo. Por exemplo, se tiver três alvos, pode configurar esta regra para que, quando o lançamento for implementado com êxito no primeiro alvo, seja promovido automaticamente ao segundo alvo.
Quando configura uma automatização promoteReleaseRule
, pode especificar um alvo para promover (destinationTargetId
) ou @next
. Quando a implementação
termina com êxito no alvo especificado na definição Automation
, a versão é promovida para o alvo especificado em destinationTargetId
,
sujeita a um intervalo de tempo wait
.
Também pode promover uma versão para uma fase específica no destino pretendido, usando a propriedade destinationPhase
. A secção rules
apresentada aqui é colocada na sua definição de automatização.
rules:
- promoteReleaseRule:
name: "[RULE_NAME]"
wait: [WAIT_TIME]
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Onde:
[RULE_NAME]
É qualquer nome que queira dar a esta regra. Este nome tem de ser exclusivo no recurso de automatização.
[WAIT_TIME]
É o período de tempo, em minutos, a aguardar após o lançamento estar pronto para promoção antes de ser promovido. Por exemplo,
1m
. O campom
é obrigatório.O valor predefinido é
0
, ou seja, sem tempo de espera. O máximo é de20160m
(ou 14 dias).[TO_TARGET]
É o
targetId
do alvo a promover.Também pode ser
@next
, que promove automaticamente o lançamento para o próximo destino após o destino especificado na propriedadeselector.targets
nesta configuração de automatização. Esta é a predefinição se omitir o valor dedestinationTargetId
.[TO_PHASE]
É o nome da fase para a qual quer promover, por exemplo,
canary-25
oustable
. Esta propriedade é opcional. Se a omitir, o lançamento é promovido para a primeira fase no destino.
Configure uma regra de automatização advanceRolloutRule
O advanceRolloutRule
avança a implementação automaticamente, após a conclusão
bem-sucedida de uma fase, para a fase seguinte. Esta regra de automatização é útil para implementações de teste. Por exemplo, se tiver uma estratégia de implementação canária configurada num alvo, com fases de 25%
, 50%
e stable
, pode configurar uma regra de automatização que avance automaticamente a fase para stable
após a conclusão da fase 50%
.
Quando configura uma automatização advanceRolloutRule
, identifica a fase a
avançar a partir (o sourcePhase
). A secção rules
apresentada aqui é incluída na
definição de automatização.
rules:
- advanceRolloutRule:
name: "[RULE_NAME]"
sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
wait: [WAIT_TIME]
Onde:
[RULE_NAME]
É qualquer nome que queira dar a esta regra. Este nome tem de ser exclusivo no pipeline de entrega.
[WAIT_TIME]
É o período de tempo, em minutos, a aguardar para avançar a implementação após a implementação estar pronta. Por exemplo,
1m
. O campom
é obrigatório.O valor predefinido é
0
, ou seja, sem tempo de espera. O máximo é de20160m
(ou 14 dias).["[START_PHASE]", "[START_PHASE]"...]
É a fase ou as fases a partir das quais a implementação é avançada automaticamente. Ou seja, quando qualquer uma das fases indicadas termina com êxito, a implementação é automaticamente avançada dessa fase para a fase seguinte.
Os nomes das fases são sensíveis a maiúsculas e minúsculas. Além disso, estes nomes de fases são opcionais. Se omitir
sourcePhases
, todas as fases na implementação são avançadas automaticamente.
Configure uma regra de automatização repairRolloutRule
A regra repairRolloutRule
tenta novamente uma implementação falhada um número especificado de vezes. Se esse número de novas tentativas for esgotado, esta regra pode, em seguida, reverter automaticamente o destino para a última versão bem-sucedida.
Quando configura uma automatização repairRolloutRule
, pode especificar quantas vezes
tentar novamente a implementação e o tempo de espera entre as novas tentativas. Também pode configurar fases ou tarefas específicas, ou ambas, para repetir. Se cada tentativa de repetição falhar, a implementação falha. Se qualquer nova tentativa for bem-sucedida, a automatização é interrompida e a implementação é bem-sucedida.
Opcionalmente, pode configurar a automatização para reverter para a versão bem-sucedida mais recente no destino. As novas tentativas também são opcionais, mas tem de ter um determinado número de novas tentativas ou uma reversão, ou ambas.
A secção rules
apresentada aqui é colocada na sua
definição de automatização.
rules:
- repairRolloutRule:
name: "[RULE_NAME]"
phases: [PHASES_TO_REPAIR]
jobs: [JOBS_TO_REPAIR]
repairPhases:
- retry:
attempts: [NUMBER_OF_ATTEMPTS]
wait: [WAIT_TIME]
backoffMode: [LINEAR | EXPONENTIAL]
- rollback:
destinationPhase: [PHASE_NAME]
Onde:
[RULE_NAME]
É qualquer nome que queira dar a esta regra. Este nome tem de ser exclusivo no pipeline de entrega.
[PHASES_TO_REPAIR]
É a fase ou as fases de implementação a tentar novamente. Esta opção é opcional e a predefinição são todas as fases na implementação.
[JOBS_TO_REPAIR]
É a tarefa ou as tarefas a repetir. Esta opção é opcional e a predefinição são todas as tarefas.
[NUMBER_OF_ATTEMPTS]
Opcional, o número de vezes que deve tentar a implementação antes de a considerar com falhas.
[WAIT_TIME]
É o tempo de espera entre tentativas. Por exemplo,
1m
para um intervalo de um minuto. A unidade de tempo (m
neste caso) é obrigatória.Se
mode
forlinear
, este intervalo é o mesmo para cada nova tentativa. Semode
forexponential
, o intervalo aumenta de cada vez. (Consultemode
para ver uma descrição mais detalhada.)backoffMode
LINEAR
ouEXPONENTIAL
, indicando se deve ou não aumentar o tempo entre novas tentativas. SeLINEAR
, o tempo entre novas tentativas é constante, emWAIT_TIME
. SeEXPONENTIAL
, o tempo entre as novas tentativas duplica a cada nova tentativa sucessiva. A predefinição éLINEAR
.Por exemplo, se
WAIT_TIME
for 1 m ebackoffMode
estiver definido comoEXPONENTIAL
, o tempo entre a falha e a primeira nova tentativa é de 1 minuto, o tempo entre a primeira e a segunda novas tentativas é de 2 minutos e o tempo entre a segunda e a terceira novas tentativas é de 4 minutos.rollback
Opcional: se deve ou não reverter a implementação com falha depois de esgotadas todas as tentativas de repetição.
[PHASE_NAME]
É o nome de uma fase específica para a qual quer reverter. Se omitir
toPhase
, a reversão usa a fasestable
por predefinição.
Anule uma execução de automatização repairRolloutRule
Se executar qualquer um dos seguintes comandos na implementação, a automação repairRolloutRule
é anulada:
Exemplo
Segue-se um exemplo de uma configuração de automatização com um
repairRolloutRule
:
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: regular-repair/regular
description: repair regular rollouts
suspended: false
serviceAccount: (REDACTED)
selector:
targets:
- id: t1
rules:
- repairRolloutRule:
name: "repair-rollout"
repairPhases:
- retry:
attempts: 3
wait: 1m
backoffMode: LINEAR
- rollback:
destinationPhase: "stable"
Nesta automatização, se uma implementação falhar no alvo identificado, essa implementação é tentada novamente até 3 vezes, com um minuto de espera entre cada tentativa. Se todas as tentativas de repetição falharem, é iniciada uma reversão através da criação de uma nova implementação para implementar a versão bem-sucedida mais recente do destino nesse destino.
O que se segue?
Experimente o início rápido: automatize a criação de lançamentos e o avanço da implementação.
Saiba mais acerca da automatização da implementação no Cloud Deploy.