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

Criando uma build agendada no yaml

Outro dia precisei configurar uma build agendada no yaml. Já tinha feito várias vezes isso no modelo clássico e com os antigos processos em XAML, porém nunca tinha feito ainda um com Yaml e acabei tendo um problema simples de resolver.

Para criarmos uma build agendada com YAML, nós precisamos apenas fazer uma declaração de uma tag chamada schedules. Dentro dessa tag nós podemos descrever o comportamento esperado para esse nosso agendamento.

Basicamente precisamos definir:

  • Horário, dias que queremos que a build seja executada
  • Especificar para quais branches desejamos que essa build agendada seja executada
  • Se vai executar sempre ou apenas se teve alteração de código na branch.

Para fazermos isso, precisamos declarar da seguinte forma:

1
2
3
4
5
6
7
schedules:
- cron: "aqui entrar uma string no formato 'cron' com informação de horário, dias e etc"
  displayName: "Nome da build"
  branches:
    include: "Nome das branches que vão usar essa build agendada"
    exclude: "Nome das branches que não usarão essa build"
  always: "[True/False] Para indicar se vai sempre executar ou apenas quando tiver alteração"

Até aí nada demais e simples a configuração. A grande diferença é quando você precisa definir os dias e horários que a build vai agendar.

Para criarmos uma build que vá rodar todos os dias a meia-noite e só será executada quando tiver alteração na branch master, teremos o seguinte código:

1
2
3
4
5
6
7
schedules:
- cron: "0 0 * * *"
  displayName: Daily midnight build
  branches:
    include:
    - master
  always: false

Para quem não está acostumado com o modelo do cron fica difícil entender como definir as datas e dias.

Então vamos entender um pouco o que isso tudo significa.

O primeiro número identifica o minuto, pode conter valores de 0 a 59 que vai ser executada a build. Então uma build que vá ser executada as 00:30 teria o seguinte valor:

1
cron: "30 0 * * *"

O segundo número identifica a hora, pode conter valores de 0 a 23. Então para uma build as 22:30, teríamos:

1
cron: "30 22 * * *"

O terceiro item identifica o dia, pode conter valores de 1 a 31 e um *. Aqui já temos uma detalhe. Se quisermos que seja executada todo dia, simplesmente definimos * e pronto. Todos os dias a sua build será executada.

1
cron: "30 22 * * *"

Se desejarmos agendar para rodar algum dia específico do mês, colocamos o dia desejado. Por exemplo, executar todo dia 10 as 22:30, ficaria da seguinte maneira:

1
cron: "30 22 10 * *"

O quarto item identifica os meses. Ele pode conter valores de 1 a 12, Nome completo do mês em inglês ou as 3 primeiras letras referente ao mês.

O quinto item identifica os dias da semana. Ele pode conter valores de 0 a 6, onde 0 representa o domingo e 6 o sábado. Da mesma maneira que o mês, nós podemos colocar o nome completo do dia em inglês ou as três primeiras letras. Então para criarmos uma build que rode de segunda a sexta às 22:30, teríamos o seguinte código:

1
cron: "30 22 10 * Mon,Tue,Wed,Thu,Fri"

Nesse último caso vimos que podemos usar , para poder passar mais de um valor.

Se quiser mais detalhes, valor a penas olhar esse “link”

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