Ausführungs- und Buildnummern
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
In diesem Artikel wird der Aufbau von Build- und Ausführungsnummern von Azure Pipelines und ihre Anpassung für Ihre Pipelines beschrieben.
Die Ausführungsnummer wird zur Identifizierung einer bestimmten Ausführung einer Pipeline oder eines Builds verwendet. Die Buildnummer ist synonym mit der Ausführungsnummer.
Wenn Sie in YAML-Pipelines keinen Buildnamen angeben oder das Feld Name in klassischen Pipelines leer lassen, erhält die Ausführung eine eindeutige ganze Zahl als Namen. Sie können Ausführungen nützlichere Namen geben, die für Ihr Team einen Sinn ergeben. Sie können in Buildnamen eine Kombination aus Tokens, Variablen und Unterstrichzeichen verwenden.
In YAML-Pipelines hat die Buildnamen-Eigenschaft den Namen name
und muss sich auf der Stammebene der Pipeline befinden. Auf der Stammebene einer YAML-Datei angegebene Elemente sind Pipelineeigenschaften.
Hinweis
Die Eigenschaft name
funktioniert nicht in Vorlagendateien.
Im folgenden Beispielcode wird eine angepasste Buildnummer ausgegeben, z. B. project_def_master_202408281.
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:r)
steps:
- script: echo '$(Build.BuildNumber)'
Ausführungsnummer
Der Standardwert für eine Ausführungsnummer in Azure Pipelines ist $(Date:yyyyMMdd).$(Rev:r)
. $(Rev:r)
ist ein spezielles Variablenformat, das nur im Feld für die Buildnummer funktioniert. Wenn ein Build abgeschlossen wird und für die Buildnummer nichts anderes geändert wurde, wird der Ganzzahlwert Rev
um eins erhöht.
$(Rev:r)
wird auf 1
zurückgesetzt, wenn ein anderer Teil der Buildnummer geändert wird. Wenn Sie das Buildnummernformat beispielsweise als $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
konfigurieren, wird die Buildnummer zurückgesetzt, wenn sich das Datum ändert.
Wenn die vorherige Buildnummer MyBuild_20230621.1
war, ist die nächste Buildnummer an diesem Tag MyBuild_20230621.2
. Die erste Buildnummer am nächsten Tag ist MyBuild_20230622.1
.
$(Rev:r)
wird ebenfalls auf 1
zurückgesetzt, wenn Sie die Buildnummer ändern, um eine Versionsänderung anzugeben. Wenn das Buildformat beispielsweise 1.0.$(Rev:r)
ist, die letzte Buildnummer 1.0.3
ist und Sie die Buildnummer in 1.1.$(Rev:r)
ändern, ist die nächste Buildnummer 1.1.1
.
Beispiel
Berücksichtigen Sie die folgenden Daten bei der Buildausführung:
- Projektname: Fabrikam
- Pipelinename: CIBuild
- Branch: main
- Build-ID/Ausführungs-ID: 752
- Datum: 6. Mai 2024
- Uhrzeit: 21:07:03
- Eine Ausführung wurde früher am heutigen Tag abgeschlossen.
Wenn Sie das folgende Buildnummernformat angeben, erhält die zweite Ausführung am 6. Mai 2024 den Namen Fabrikam_CIBuild_main_20240506.2.
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
Token
Die folgende Tabelle zeigt, wie die einzelnen Token auf Grundlage des vorherigen Beispiels aufgelöst werden. Sie können diese Token nur zum Definieren von Ausführungsnummern verwenden. Sie funktionieren an keiner anderen Stelle einer Pipeline.
Token | Beispielswert | Hinweise |
---|---|---|
$(Build.DefinitionName) |
CIBuild | Der Pipelinename darf keine ungültigen Zeichen oder Leerzeichen enthalten. |
$(Build.BuildId) |
752 | $(Build.BuildId) ist eine interne, unveränderliche ID, die auch als Ausführungs-ID (Run-ID) bezeichnet wird. Sie ist für die gesamte Azure DevOps-Organisation eindeutig. |
$(DayOfMonth) |
6 | |
$(DayOfYear) |
126 | |
$(Hours) |
21 | |
$(Minutes) |
7 | |
$(Month) |
5 | |
$(Rev:r) |
2 | Die dritte Ausführung des Tages hat den Namen 3 usw. Verwenden Sie $(Rev:r) , um sicherzustellen, dass jeder abgeschlossene Build einen eindeutigen Namen hat. |
$(Date:yyyyMMdd) |
20240506 | Sie können andere Datumsformate angeben, z. B. $(Date:MMddyy) . |
$(Seconds) |
3 | |
$(SourceBranchName) |
Standard | |
$(TeamProject) |
Fabrikam | |
$(Year:yy) |
24 | |
$(Year:yyyy) |
2024 |
Wichtig
Wenn Sie vorangestellte Nullen in der Ausführungsnummer anzeigen möchten, können Sie weitere r
-Zeichen zum Token Rev
hinzufügen. Sie können beispielsweise $(Rev:rr)
angeben, wenn die Rev
-Nummer mit 01
, 02
usw. beginnen soll.
Wenn Sie eine mit Nullen aufgefüllte Rev
als Teil eines Versionsnummerierungsschemas verwenden, sollten Sie beachten, dass einige Pipelineaufgaben oder verbreitete Tools, z. B. NuGet-Pakete, die führenden Nullen entfernen. Dieses Verhalten führt zu einer fehlenden Versionsnummernübereinstimmung in den erzeugten Artefakten.
Ausdrücke
Wenn Sie einen Ausdruck zum Festlegen der Buildnummer verwenden, können Sie einige Token nicht verwenden, da ihre Werte zum Zeitpunkt der Auswertung der Ausdrücke nicht festgelegt sind. Zu diesen Token gehören $(Build.BuildId)
, $(Build.BuildURL)
und $(Build.BuildNumber)
.
Variablen
Sie können in der Buildnummer benutzerdefinierte und vordefinierte Variablen verwenden. Wenn Sie beispielsweise My.Variable
definieren, können Sie das folgende Zahlenformat angeben:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
Im vorangehenden Beispiel sind die ersten vier Variablen vordefiniert. Informationen zum Definieren von Benutzervariablen finden Sie unter Festlegen von Variablen in Pipelines.
Häufig gestellte Fragen
Wie groß kann eine Ausführungsnummer sein und welche Zeichen kann ich verwenden?
Ausführungsnummern können bis zu 255 Zeichen enthalten. Die Zeichen "
, /
, :
, <
, >
, '
, |
, ?
, @
oder *
sind nicht zulässig. Die Nummer darf nicht mit .
enden.
In welcher Zeitzone werden die Zeitwerte für die Buildnummer ausgedrückt?
Die Zeitzone ist UTC.
Die Zeitzone entspricht der Zeitzone des Betriebssystems des Computers, auf dem der Anwendungsebenenserver ausgeführt wird.
Wie kann ich die Buildnummer dynamisch mit Bedingungen festlegen?
Sie können Variablen als Teil Ihrer Ausführungsnummer verwenden. Im folgenden Beispiel wird die Variable why
als Teil der Ausführungsnummer verwendet. Ihr Wert ist vom Build.Reason
abhängig.
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)'
Wie kann ich in einem Skript auf die Variable der Ausführungsnummer verweisen?
Sie können eine neue Variable definieren, die die Ausführungsnummer enthält, oder die Ausführungsnummer direkt aufrufen. Im folgenden Beispiel ist $(MyRunNumber)
eine neue Variable, die die Ausführungsnummer enthält. Sie können die Variable für die Ausführungsnummer mit MyRunNumber
oder $(Build.BuildNumber)
aufrufen.
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)