Configurer des numéros d’exécution ou de build

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

Vous pouvez personnaliser la façon dont vos exécutions de pipeline sont numérotées. La valeur par défaut du numéro d’exécution est $(Date:yyyyMMdd).$(Rev:r).

Dans Azure DevOps, $(Rev:r) est un format de variable spécial qui fonctionne uniquement dans le champ du numéro de build. Quand une build est terminée, si rien d’autre n’a changé dans le numéro de build, la valeur entière Rev est augmentée de un.

$(Rev:r) se réinitialise lorsque vous modifiez une partie du numéro de build. Par exemple, si vous avez configuré votre format de numéro de build en utilisant $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), le numéro de build est réinitialisé lorsque la date change le jour suivant. Si votre numéro de build est MyBuild_20230621.1, le numéro de build suivant ce jour-là est MyBuild_20230621.2. Le lendemain, le numéro de build est MyBuild_20230622.1.

Si votre format de numéro de build est 1.0.$(Rev:r), alors le numéro de build est réinitialisé à 1.0.1 lorsque vous modifiez une partie du numéro. Par exemple, si le numéro de votre dernière build était 1.0.3 et que vous modifiez le numéro de build par 1.1.$(Rev:r) pour indiquer un changement de version, le numéro de build suivant est 1.1.1.

Dans un fichier YAML, cette propriété est appelée name et doit se trouver au niveau racine d’un pipeline.

Remarque

Les éléments spécifiés au niveau racine d’un fichier YAML sont des propriétés de pipeline.

Si elle n’est pas spécifiée, votre exécution reçoit un entier unique en tant que nom. Vous pouvez donner aux exécutions des noms beaucoup plus utiles qui ont du sens pour votre équipe. Vous pouvez utiliser une combinaison de jetons, de variables et de traits de soulignement. La propriété name ne fonctionne pas dans les fichiers de modèle.

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

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

Les builds YAML ne sont pas encore disponibles sur TFS.

Exemple

À ce moment-là, une exécution est démarrée :

  • Nom du projet : Fabrikam

  • Nom du pipeline : CIBuild

  • Branche : main

  • ID de build/ID d’exécution : 752

  • Date : 5 mai 2019.

  • Heure : 21h07m03s.

  • Une seule exécution s’est terminée plus tôt dans la journée.

Si vous spécifiez ce format de numéro de build :

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

Alors la deuxième exécution de la journée serait nommée : Fabrikam_CIBuild_main_20190505.2

Jetons

Le tableau suivant indique comment chaque jeton est converti en fonction de l’exemple précédent. Vous pouvez utiliser ces jetons uniquement pour définir un numéro d’exécution ; ils ne fonctionnent nulle part ailleurs dans votre pipeline.

Jeton Exemple de valeur de remplacement
$(Build.DefinitionName) CIBuild

Remarque : Le nom du pipeline ne doit pas contenir de caractères non valides ni d’espaces blancs.
$(Build.BuildId) 752

$(Build.BuildId) est un ID interne immuable qui est également appelé ID d’exécution. Il est unique dans toute l’organisation.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (La troisième exécution correspond à 3, et ainsi de suite.)

Utilisez $(Rev:r) pour vous assurer que chaque build terminée porte un nom unique. Quand une build démarre, si rien d’autre n’a changé dans le numéro de build, la valeur entière Rev est augmentée de un.

Si vous souhaitez préfixer le numéro avec des zéros, vous pouvez ajouter d’autres caractères « r ». Par exemple, spécifiez $(Rev:rr) si vous souhaitez que le numéro Rev commence par 01, 02, et ainsi de suite. Si vous utilisez un numéro Rev rempli de zéros dans le cadre d’un schéma de numérotation de version, notez que certaines tâches de pipeline ou certains outils populaires, comme les packages NuGet, suppriment les zéros non significatifs, ce qui entraîne une incompatibilité des numéros de version dans les artefacts produits.
$(Date:yyyyMMdd) 20090824

Vous pouvez spécifier d’autres formats de date comme $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Variables

Vous pouvez également utiliser des variables définies par l’utilisateur et prédéfinies dont l’étendue est « Tout » dans votre numéro. Par exemple, si vous avez défini My.Variable, vous pouvez spécifier le format de numéro suivant :

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

Les quatre premières variables sont prédéfinies. Vous définissez My.Variable sous l’onglet Variables.

Expressions

Si vous utilisez une expression pour définir le numéro de build, vous ne pouvez pas utiliser certains jetons, car leurs valeurs ne sont pas définies au moment de l’évaluation des expressions. Ces jetons incluent $(Build.BuildId), $(Build.BuildURL) et $(Build.BuildNumber).

Questions fréquentes (FAQ)

Quelle est la longueur d’un numéro d’exécution et quels caractères puis-je utiliser ?

Les exécutions peut comporter jusqu’à 255 caractères. Les caractères qui ne sont pas autorisés incluent ", /, :, <, >, ', |, ?, @ et *. Vous ne pouvez pas terminer par un ..

Dans quel fuseau horaire les valeurs de temps de numéro de build sont-elles exprimées ?

Le fuseau horaire est UTC.

Le fuseau horaire est identique au fuseau horaire du système d’exploitation de l’ordinateur sur lequel vous exécutez votre serveur de couche Application.

Comment pouvez-vous référencer la variable du numéro d’exécution au sein d’un script ?

La variable du numéro d’exécution peut être appelée avec $(Build.BuildNumber). Vous pouvez définir une nouvelle variable qui inclut le numéro d’exécution ou appeler directement le numéro d’exécution. Dans cet exemple, $(MyRunNumber) est une nouvelle variable qui inclut le numéro d’exécution.

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


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

Comment puis-je définir dynamiquement le numéro de build avec des conditions ?

Vous pouvez utiliser des variables dans le cadre de votre numéro d’exécution. Dans cet exemple, la variable why change en fonction de Build.Reason et elle est utilisée dans le cadre du numéro d’exécution.

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