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
, 02
et 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)