Partager via


Exécuter et générer des numéros

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

Cet article explique comment les numéros de build et les numéros d’exécution Azure Pipelines sont construits et comment vous pouvez les personnaliser dans vos pipelines.

Le numéro d’exécution est utilisé pour identifier une exécution spécifique d’un pipeline ou d’une build. Le numéro de build est synonyme du numéro d’exécution.

Si vous ne spécifiez pas de nom de build dans des pipelines YAML ou si vous laissez le champ Nom vide dans les pipelines Classiques, votre exécution obtient un entier unique comme nom. Vous pouvez donner des noms plus utiles à votre équipe. Vous pouvez utiliser une combinaison de jetons, de variables et de caractères de soulignement dans les noms de build.

Dans les pipelines YAML, la propriété de nom de build est appelée name et doit être au niveau racine d’un pipeline. Les éléments spécifiés au niveau racine d’un fichier YAML sont des propriétés de pipeline.

Remarque

La propriété name ne fonctionne pas dans les fichiers de modèle.

L’exemple de code suivant génère un numéro de build personnalisé tel que project_def_master_20240828.1.

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

steps:
  - script: echo '$(Build.BuildNumber)'

Nombre d’exécutions

La valeur par défaut d’un numéro d’exécution dans Azure Pipelines est $(Date:yyyyMMdd).$(Rev:r). $(Rev:r) est un format de variable spécial qui fonctionne uniquement dans le champ numéro de build. Lorsqu’une build est terminée, si rien d’autre dans le numéro de build n’a changé, la Rev valeur entière augmente d’un.

$(Rev:r) réinitialise 1 quand une autre partie du numéro de build change. Par exemple, si vous configurez votre format de numéro de build en tant que $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), le numéro de build est réinitialisé lorsque la date change.

Si le numéro de build précédent était MyBuild_20230621.1, le numéro de build suivant ce jour-là est MyBuild_20230621.2. Le premier numéro de build le lendemain est MyBuild_20230622.1.

$(Rev:r) réinitialise 1 également si vous modifiez le numéro de build pour indiquer une modification de version. Par exemple, si votre format de build est 1.0.$(Rev:r) et que votre dernier numéro de build était 1.0.3, si vous modifiez le numéro 1.1.$(Rev:r)de build en , le numéro de build suivant est 1.1.1.

Exemple

Tenez compte des données suivantes pour une exécution de build :

  • Nom du projet : Fabrikam
  • Nom du pipeline : CIBuild
  • Branche : main
  • ID de build/ID d’exécution : 752
  • Date : 6 mai 2024
  • Heure : 9:07:03 PM
  • Une seule exécution s’est terminée plus tôt dans la journée.

Si vous spécifiez le format de numéro de build suivant, la deuxième exécution le 6 mai 2024 est nommée Fabrikam_CIBuild_main_20240506.2.

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

Jetons

Le tableau suivant montre comment chaque jeton est résolu, en fonction de l’exemple précédent. Vous ne pouvez utiliser ces jetons que pour définir des nombres d’exécution. Ils ne fonctionnent nulle part ailleurs dans un pipeline.

par jeton Exemple de valeur Notes
$(Build.DefinitionName) CIBuild Le nom du pipeline ne peut pas contenir de caractères non valides ou d’espace blanc.
$(Build.BuildId) 752 $(Build.BuildId) est un ID interne immuable, également appelé ID d’exécution, unique dans l’organisation Azure DevOps.
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 La troisième exécution quotidienne est 3, et ainsi de suite. Permet $(Rev:r) de s’assurer que chaque build terminée a un nom unique.
$(Date:yyyyMMdd) 20240506 Vous pouvez spécifier d’autres formats de date tels que $(Date:MMddyy).
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

Important

Si vous souhaitez afficher les zéros de préfixe dans le numéro d’exécution, vous pouvez ajouter d’autres r caractères au Rev jeton. Par exemple, spécifiez $(Rev:rr) si vous souhaitez que le Rev nombre commence par 01, 02et ainsi de suite.

Si vous utilisez un zéro rembourré Rev dans le cadre d’un schéma de numérotation de version, sachez que certaines tâches de pipeline ou outils populaires, tels que les packages NuGet, suppriment les zéros non significatifs. Ce comportement provoque une incompatibilité de numéro de version dans les artefacts générés.

Expressions

Si vous utilisez une expression pour définir le numéro de build, vous ne pouvez pas utiliser de jetons, car leurs valeurs ne sont pas définies au moment où les expressions sont évaluées. Ces jetons incluent $(Build.BuildId), $(Build.BuildURL) et $(Build.BuildNumber).

Variables

Vous pouvez utiliser des variables définies par l’utilisateur et prédéfinies dans votre numéro de build. Par exemple, si vous définissez My.Variable, vous pouvez spécifier le format numérique suivant :

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

Dans l’exemple précédent, les quatre premières variables sont prédéfinies. Pour plus d’informations sur la définition des variables utilisateur, consultez Définir des variables dans des pipelines.

Forum aux questions

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

Les numéros d’exécution peuvent comporter jusqu’à 255 caractères. Vous ne pouvez pas utiliser les caractères ", , /, <|?'>:, , @ou , ou , et *vous ne pouvez pas mettre fin au nombre avec ..

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 qui exécute votre serveur de couche Application.

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 l’exemple suivant, la variable why est utilisée dans le cadre du numéro d’exécution et sa valeur change en fonction du Build.Reason.

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)'

Comment puis-je référencer la variable de numéro d’exécution dans un script ?

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 l’exemple suivant, $(MyRunNumber) est une nouvelle variable qui inclut le numéro d’exécution. Vous pouvez appeler la variable de numéro d’exécution à l’aide MyRunNumber ou $(Build.BuildNumber).

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

steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)

Définir des variables