Konfigurieren von Ausführungs- oder Buildnummern
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Sie können anpassen, wie Ihre Pipelineausführungen nummeriert werden. Der Standardwert für die Ausführungsnummer ist $(Date:yyyyMMdd).$(Rev:r)
.
In Azure DevOps ist $(Rev:r)
ein spezielles Variablenformat, das nur im Feld der Buildnummer funktioniert. Wenn ein Build abgeschlossen ist, wird der Ganzzahlwert Rev
um eins erhöht, wenn sich sonst nichts an der Buildnummer geändert hat.
$(Rev:r)
wird zurückgesetzt, wenn Sie einen Teil der Buildnummer ändern. Wenn Sie ihr Buildnummernformat beispielsweise als $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
konfiguriert haben, wird die Buildnummer zurückgesetzt, wenn sich das Datum am nächsten Tag ändert. Wenn Ihre Buildnummer MyBuild_20230621.1
lautet, ist MyBuild_20230621.2
die nächste Buildnummer an diesem Tag. Am nächsten Tag lautet die Buildnummer MyBuild_20230622.1
.
Wenn Ihr Buildnummernformat 1.0.$(Rev:r)
lautet, wird die Buildnummer auf 1.0.1
zurückgesetzt, wenn Sie einen Teil der Nummer ändern. Wenn ihre letzte Buildnummer z. B. 1.0.3
lautete und Sie die Buildnummer in 1.1.$(Rev:r)
ändern, um eine Versionsänderung anzugeben, lautet die nächste Buildnummer 1.1.1
.
In YAML wird diese Eigenschaft name
genannt und muss sich auf der Stammebene einer Pipeline befinden.
Hinweis
Auf der Stammebene einer YAML-Datei angegebene Elemente sind Pipelineeigenschaften.
Wenn sie nicht angegeben ist, 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 von Bedeutung sind.
Sie können eine Kombination aus Tokens, Variablen und Unterstrichzeichen verwenden.
Die Eigenschaft name
funktioniert nicht in Vorlagendateien.
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
steps:
- script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1
YAML-Builds sind noch nicht in TFS verfügbar.
Beispiel
Zu diesem Zeitpunkt wird eine Ausführung gestartet:
Projektname: Fabrikam
Pipelinename: CIBuild
Branch: main
Build-ID/Ausführungs-ID: 752
Datum: 5. Mai 2019.
Uhrzeit: 21:07:03.
Eine Ausführung wurde früher am heutigen Tag abgeschlossen.
Wenn Sie dieses Buildnummernformat angeben:
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)
Die zweite Ausführung an diesem Tag würde wie folgt heißen: Fabrikam_CIBuild_main_20190505.2
Token
Die folgende Tabelle zeigt, wie die einzelnen Token auf Grundlage des vorherigen Beispiels aufgelöst werden. Sie können diese Token nur verwenden, um eine Ausführungsnummer zu definieren. Sie funktionieren an keiner anderen Stelle in Ihrer Pipeline.
Token | Beispiel-Ersetzungswert |
---|---|
$(Build.DefinitionName) |
CIBuild Hinweis: 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 bezeichnet wird. Sie ist in der gesamten Organisation einzigartig. |
$(DayOfMonth) |
5 |
$(DayOfYear) |
217 |
$(Hours) |
21 |
$(Minutes) |
7 |
$(Month) |
8 |
$(Rev:r) |
2 (Die dritte Ausführung ist 3 usw.) Verwenden Sie $(Rev:r), um sicherzustellen, dass jeder abgeschlossene Build einen eindeutigen Namen aufweist. Wenn ein Build startet, wird der Ganzzahlenwert „Rev“ um eins nach oben gezählt, wenn sich nichts an der Buildnummer geändert hat. Wenn Sie vorangestellte Nullen in der Nummer anzeigen möchten, können Sie weitere „r“-Zeichen hinzufügen. Geben Sie beispielsweise $(Rev:rr) an, wenn die Rev-Zahl mit 01, 02 usw. beginnen soll. Wenn Sie eine mit Nullen erweiterte Rev als Teil eines Versionsnummerierungsschemas verwenden, beachten Sie, dass einige Pipelinetasks oder gängige Tools, wie NuGet-Pakete, die vorangestellten Nullen entfernen, was zu einem Versionsnummernkonflikt in den erstellten Artefakten führt. |
$(Date:yyyyMMdd) |
20090824 Sie können andere Datumsformate angeben, z. B. $(Date:MMddyy) |
$(Seconds) |
3 |
$(SourceBranchName) |
Standard |
$(TeamProject) |
Fabrikam |
$(Year:yy) |
09 |
$(Year:yyyy) |
2009 |
Variables
Sie können auch benutzerdefinierte und vordefinierte Variablen verwenden, die in Ihrer Nummer einen Bereich von „Alle“ haben. Wenn Sie beispielsweise My.Variable
definiert haben, können Sie das folgende Zahlenformat angeben:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
Die ersten vier Variablen sind vordefiniert. My.Variable
wird von Ihnen auf der Registerkarte „Variablen“ definiert.
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 von Ausdrücken nicht festgelegt sind. Zu diesen Token gehören $(Build.BuildId)
, $(Build.BuildURL)
und $(Build.BuildNumber)
.
Häufig gestellte Fragen
Wie groß kann eine Ausführungsnummer sein und welche Zeichen kann ich verwenden?
Ausführungen können bis zu 255 Zeichen enthalten. Zu den nicht zulässigen Zeichen gehören "
, /
, :
, <
, >
, '
, |
, ?
, @
und *
. Sie können nicht mit einem .
enden.
Welcher Zeitzone entsprechend werden die Werte für die Buildnummer-Zeit ausgedrückt?
Die Zeitzone ist UTC.
Die Zeitzone entspricht der Zeitzone des Betriebssystems des Computers, auf dem Ihr Anwendungsebenenserver ausgeführt wird.
Wie kann in einem Skript auf die Variable der Ausführungsnummer verwiesen werden?
Die Variable der Ausführungsnummer kann mit $(Build.BuildNumber)
aufgerufen werden. Sie können eine neue Variable definieren, die die Ausführungsnummer enthält, oder die Ausführungsnummer direkt aufrufen. In diesem Beispiel ist $(MyRunNumber)
eine neue Variable, die die Ausführungsnummer enthält.
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number
Wie kann ich die Buildnummer dynamisch mit Bedingungen festlegen?
Sie können Variablen als Teil Ihrer Ausführungsnummer verwenden. In diesem Beispiel ändert sich die Variable why
abhängig von Build.Reason
und wird als Teil der Ausführungsnummer verwendet.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für