Configurar números de execução ou de build

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Você pode personalizar como as execuções de pipeline são numeradas. O valor padrão para o número de execução é $(Date:yyyyMMdd).$(Rev:r).

No Azure DevOps $(Rev:r), há um formato de variável especial que funciona apenas no campo número de build. Quando um build é concluído, se nada mais no número de build tiver sido alterado, o valor inteiro Rev aumentará em um.

$(Rev:r) redefine quando você altera parte do número de build. Por exemplo, se você tiver configurado o formato de número de build como $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), o número de build será redefinido quando a data for alterada no dia seguinte. Se o número de build for MyBuild_20230621.1, o próximo número de build nesse dia será MyBuild_20230621.2. No dia seguinte, o número de build é MyBuild_20230622.1.

Se o formato do número de build for 1.0.$(Rev:r), o número de build será redefinido como 1.0.1 quando você alterar parte do número. Por exemplo, se o último número de build for 1.0.3 e você alterar o número de build para 1.1.$(Rev:r) para indicar uma alteração de versão, o próximo número de build será 1.1.1.

No YAML, essa propriedade é chamada name e deve estar no nível raiz de um pipeline.

Observação

Os itens especificados no nível raiz de um arquivo YAML são propriedades de pipeline.

Se não for especificado, sua execução recebe um inteiro exclusivo como seu nome. Você pode dar a execuções nomes muito mais úteis que são significativos para sua equipe. Você pode usar uma combinação de tokens, variáveis e caracteres de sublinhado. A propriedade name não funciona em arquivos de modelo.

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)

steps:
  - script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1

Os builds do YAML ainda não estão disponíveis no TFS.

Exemplo

No momento, uma execução é iniciada:

  • Nome do projeto: Fabrikam

  • Nome do pipeline: CIBuild

  • Branch: principal

  • ID de build/ID de execução: 752

  • Data: 5 de maio de 2019.

  • Hora: 21h07min03.

  • Uma execução concluída hoje cedo.

Se você especificar este formato de número de build:

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)

Em seguida, a segunda execução neste dia teria o nome: Fabrikam_CIBuild_main_20190505.2

Tokens

A tabela a seguir mostra como cada token é resolvido com base no exemplo anterior. Você pode usar esses tokens apenas para definir um número de execução; eles não funcionam em nenhum outro lugar em seu pipeline.

Token Exemplo de valor de substituição
$(Build.DefinitionName) CIBuild

Observação: o nome do pipeline não deve conter caracteres de espaço em branco ou inválidos.
$(Build.BuildId) 752

$(Build.BuildId) é uma ID imutável interna que também é conhecida como A ID de Execução. Ele é exclusivo em toda a organização.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (a terceira execução é 3 e assim por diante.)

Use $(Rev:r) para garantir que cada build concluído tenha um nome exclusivo. Quando um build é iniciado, se nada mais no número de build for alterado, o valor inteiro Rev será incrementado em um.

Se você quiser mostrar zeros de prefixo no número, poderá adicionar mais caracteres 'r'. Por exemplo, especifique $(Rev:rr) se quiser que o número Rev comece com 01, 02 e assim por diante. Se você usar um Rev com preenchimento zero como parte de um esquema de numeração de versão, observe que algumas tarefas de pipeline ou ferramentas populares, como pacotes NuGet, removem os zeros à esquerda, o que causa uma incompatibilidade de número de versão nos artefatos produzidos.
$(Date:yyyyMMdd) 20090824

Você pode especificar outros formatos de data, como $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Variáveis

Você também pode usar variáveis definidas pelo usuário e predefinidas com i, escopo de "Todos" no número. Por exemplo, se você tiver definido My.Variable, poderá especificar o seguinte formato de número:

$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)

As quatro primeiras variáveis são predefinidas. My.Variable é definido por você na guia variáveis.

Expressões

Se você usar uma expressão para definir o número de build, não poderá usar alguns tokens porque seus valores não são definidos no momento em que as expressões são avaliadas. Esses tokens incluem $(Build.BuildId), $(Build.BuildURL) e $(Build.BuildNumber).

Perguntas frequentes

Qual é o tamanho de um número de execução e quais caracteres posso usar?

As execuções podem ter até 255 caracteres. Os caracteres que não são permitidos incluem ", /, :, <, >, ', |, ?, @e *. Você não pode terminar com um ..

Em qual fuso horário os valores de tempo do número de build são expressos?

O fuso horário é UTC.

O fuso horário é o mesmo que o fuso horário do sistema operacional do computador em que você está executando o servidor da camada de aplicativo.

Como você pode referenciar a variável de número de execução em um script?

A variável de número de execução pode ser chamada com $(Build.BuildNumber). Você pode definir uma nova variável que inclui o número de execução ou chamar o número de execução diretamente. Neste exemplo, $(MyRunNumber) é uma nova variável que inclui o número de execução.

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'


steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number

Como posso definir o número de build dinamicamente com condições?

Você pode usar variáveis como parte do número de execução. Neste exemplo, a variável why muda dependendo do Build.Reason e é usada como parte do número de execução.

variables:
  - name: why
    ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
      value: pr
    ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
      value: manual
    ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
      value: indivci
    ${{ else }}:
      value: other

name: $(TeamProject)_$(SourceBranchName)_$(why)_$(Date:yyyyMMdd).$(Rev:.r)

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)' ## output run number