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

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

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

No Azure, o DevOps é um formato de $(Rev:r) variável especial que só funciona no campo de número de compilação. Quando uma compilação é concluída, se nada mais no número de compilação foi alterado, o Rev valor inteiro aumenta em um.

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

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

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

Nota

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

Se não for especificado, sua execução receberá um inteiro exclusivo como nome. Você pode dar às corridas 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 name propriedade 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

As compilações 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

  • Filial: principal

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

  • Data: 5 de maio de 2019.

  • Horário: 21:07:03.

  • Uma corrida concluída hoje cedo.

Se você especificar este formato de número de compilação:

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

Então a segunda corrida neste dia seria nomeada: 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 no seu pipeline.

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

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

$(Build.BuildId) é um ID interno imutável que também é conhecido como Run ID. É único em toda a organização.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (A terceira corrida é 3, e assim por diante.)

Use $(Rev:r) para garantir que cada compilação concluída tenha um nome exclusivo. Quando uma compilação é iniciada, se nada mais no número de compilação tiver sido alterado, o valor inteiro Rev será incrementado em um.

Se você quiser mostrar zeros de prefixo no número, você pode 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 uma Rev acolchoada 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, que causam 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 que têm um escopo de "Todos" em seu número. Por exemplo, se você definiu My.Variableo , pode 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 compilação, 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).

FAQ

Qual pode ser o tamanho de um número de execução e que 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 .arquivo .

Em que fuso horário são expressos os valores de tempo do número de compilação?

O fuso horário é UTC.

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

Como você pode fazer referência à variável de número de execução dentro de 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 inclua 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 compilação dinamicamente com condições?

Você pode usar variáveis como parte do seu 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