13/01/2020 | Autor: Claudio Romão | Categoria: Técnico | Comentários

AZURE PIPELINES DEPLOYMENT GATES

Quando estamos criando um pipeline para o processo de Continuous Deployment de nossa aplicação é interessante que o deploy em um determinado ambiente só ocorra se todos os critérios de validação que colocamos forem validados com sucesso, caso contrário o deploy deve falhar ou esperar um tempo até que essa condição seja verdadeira.

Ao configurar essas validações, geralmente queremos consumir dados de serviços externos, além das tarefas que estão no nosso pipeline, e é nesse cenário que o Deployment Gate entra para nos ajudar. Os gates que configuramos permitem que seja coletado informações de sistemas externos e baseado nessa resposta fazermos o deploy nos ambientes desejados.

Alguns dos cenários onde podemos usar o deployment gate

  • Liberação de deploy baseado em queries de workitems: Imagine o seguinte cenário. Você tem uma equipe de testes que trabalha em um ambiente específico e ela quer que apenas quando todos os bugs estiverem no status resolvido é que o deploy aconteça no ambiente e assim eles possam fazer a validação no sistema.

  • Processo de Gestão de Mudanças: Esperar que o processo de gestão de mudanças seja finalizado em algum outro sistema, como por exemplo o Service Now, e depois de aprovado na ferramenta que o deploy aconteça em algum ambiente específico.

  • Verificação da Qualidade do Sistema: Imagina que possamos fazer deploy em apenas alguns servidores do nosso ambiente e monitorar com o Application Insights como estão as chamadas HTTPs ou alguma métrica customizada. Caso os valores estejam dentro dos parâmetros aceitáveis, aí liberamos o deploy nos outros ambientes. Caso contrário, o deploy será cancelado.

Esses são apenas alguns exemplos, mas podemos utilizar em uma infinidade de casos. Agora vamos ver como configurar um deployment gate no seu pipeline.

Primeiro precisamos ter um pipeline criado, como exemplo vou utilizar um pipeline com 3 estágios Dev, QA e Prod.

Exemplo de pipeline
Exemplo de pipeline

Agora vamos clicar no botão de configurações de pre-deployment conditions e vamos ver a seguinte tela:

Exemplo de pipeline
Exemplo de pipeline

Feito isso, nós vamos agora rolar a tela um pouco para baixo até achar a opção Gates e vamos habilitá-la. Ao habilitar um gate, nós poderemos adicionar um tipo de gate. Os tipos que podemos selecionar são os seguintes:

  • Check Azure Policy compliance: Nessa opção podemos fazer a validação de alguma política de compliance de algum recurso de azure.
  • Invoke Azure Function: Nessa opção o pipeline vai chamar um function desenvolvida no Azure Functions e ela retornando sucesso poderá liberar o processo de deploy.
  • Invoke Rest API: Nessa opção o pipeline vai chamar uma API que você desenvolveu ou de algum sistema. Se a API retornar com sucesso o processo de deploy continuará.
  • Query Azure monitor Alerts: Nessa opção o pipeline vai verificar o status de algum alerta configurano no Azure Monitor. Dependendo do tipo de alerta ele poderá liberar o início do processo.
  • Query work items: Nessa opção o pipeline vai executar uma query de work items e dependendo do resultado ele irá liberar ou não o deploy no próximo ambiente.

Para cada um dos tipos acima você poderá configurar algumas respostas esperadas, como por exemplo a quantidade de work items do tipo bug que estão abertos e se ela for maior que 0 não deixar executar o pipeline. Sugiro você a testar cada uma delas e ver as opções que podemos usar.

Independentemente do tipo de gate algumas opções são comuns a todos.

  • Time between re-evalutation of gates: Cada gate configurado permite que você defina de quanto em quanto tempo ele será verificado, ou seja, pegando o exemplo da query de quanto em quanto tempo o azure pipelines irá executar a query e verificar se a quantidade de work items encontrados é maior que zero.
  • Timeout after wich gates fail: Essa opção define por quanto tempo o gate ficará sendo validado. Por exemplo, podemos definir que ele ficará executando a nossa query por até 24hs. Se ao final dessas 24hs ele não tiver nenhuma resposta positiva o pipeline será cancelado.
  • Gates and Approval: Nessa opção vamos selecionar a ordem que serão executadas as validações dos gates configurados e a necessidade de aprovação de alguém antes de iniciar o estágio.

Após todas essas configurações você terá o seu gate configurado. Agora basta executar um pipeline e verificar a liberação do deploy de um estágio apenas quando o gate obtiver sucesso na sua validação.

Espero que tenha gostado e se tiver alguma dúvida específica me manda um e-mail ou deixe nos comentários.

Até a próxima, Claudio Romão