Ausführen und Erstellen von Nummern
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
In diesem Artikel wird erläutert, wie Azure Pipelines Nummern erstellen und Ausführen von Nummern erstellt werden und wie Sie sie in Ihren Pipelines anpassen können.
Die Ausführungsnummer wird verwendet, um eine bestimmte Ausführung einer Pipeline oder eines Builds zu identifizieren. Die Buildnummer ist gleichbedeutend mit der Laufnummer.
Wenn Sie keinen Buildnamen in YAML-Pipelines angeben oder das Feld "Name " in klassischen Pipelines leer lassen, erhält die Ausführung eine eindeutige ganze Zahl als Namen. Sie können Läufe nützlicheren Namen geben, die für Ihr Team aussagekräftig sind. Sie können eine Kombination aus Token, Variablen und Unterstrichzeichen in Buildnamen verwenden.
In YAML-Pipelines wird die Buildnameneigenschaft aufgerufen name
und muss sich auf der Stammebene einer 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 wie project_def_master_20240828.1 ausgegeben.
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 lautet $(Date:yyyyMMdd).$(Rev:r)
. $(Rev:r)
ist ein spezielles Variablenformat, das nur im Feld "Buildnummer" funktioniert. Wenn ein Build abgeschlossen ist, wird der Rev
ganzzahlige Wert um eins erhöht, wenn nichts anderes in der Buildnummer geändert wurde.
$(Rev:r)
wird zurückgesetzt, 1
wenn sich ein anderer Teil der Buildnummer ändert. Wenn Sie z. B. das Buildnummernformat so $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
konfigurieren, wird die Buildnummer zurückgesetzt, wenn sich das Datum ändert.
Wenn die vorherige Buildnummer lautet MyBuild_20230621.1
, lautet MyBuild_20230621.2
die nächste Buildnummer dieses Tages. Die erste Buildnummer ist MyBuild_20230622.1
der nächste Tag.
$(Rev:r)
wird auch zurückgesetzt, 1
wenn Sie die Buildnummer ändern, um eine Versionsänderung anzugeben. Wenn ihr Buildformat beispielsweise der Zeitpunkt und 1.0.$(Rev:r)
die letzte Buildnummer lautete 1.0.3
, wenn Sie die Buildnummer 1.1.$(Rev:r)
in ", die nächste Buildnummer ändern, lautet 1.1.1
die nächste Buildnummer.
Beispiel
Berücksichtigen Sie die folgenden Daten für eine Buildausführung:
- Projektname: Fabrikam
- Pipelinename: CIBuild
- Branch: main
- Build-ID/Ausführungs-ID: 752
- Datum: 6. Mai 2024
- Uhrzeit: 19:07:03 Uhr
- Eine Ausführung wurde früher am heutigen Tag abgeschlossen.
Wenn Sie das folgende Buildnummernformat angeben, heißt die zweite Ausführung am 6. Mai 2024 Fabrikam_CIBuild_main_20240506.2.
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
Token
In der folgenden Tabelle wird gezeigt, wie jedes Token basierend auf dem vorherigen Beispiel aufgelöst wird. Sie können diese Token nur zum Definieren von Ausführungsnummern verwenden. Sie funktionieren an keiner anderen Stelle in einer Pipeline.
Token | Beispielwert | Hinweise |
---|---|---|
$(Build.DefinitionName) |
CIBuild | Der Pipelinename darf keine ungültigen oder Leerzeichen enthalten. |
$(Build.BuildId) |
752 | $(Build.BuildId) ist eine interne, unveränderliche ID, die auch als Run-ID bezeichnet wird, die in der gesamten Azure DevOps-Organisation eindeutig ist. |
$(DayOfMonth) |
6 | |
$(DayOfYear) |
126 | |
$(Hours) |
21 | |
$(Minutes) |
7 | |
$(Month) |
5 | |
$(Rev:r) |
2 | Der dritte Tageslauf ist 3 usw. Verwenden Sie diese Eigenschaft $(Rev:r) , um sicherzustellen, dass jeder abgeschlossene Build einen eindeutigen Namen hat. |
$(Date:yyyyMMdd) |
20240506 | Sie können andere Datumsformate angeben, z $(Date:MMddyy) . B. . |
$(Seconds) |
3 | |
$(SourceBranchName) |
Standard | |
$(TeamProject) |
Fabrikam | |
$(Year:yy) |
24 | |
$(Year:yyyy) |
2024 |
Wichtig
Wenn Sie präfixe in der Ausführungsnummer anzeigen möchten, können Sie dem Token weitere r
Zeichen Rev
hinzufügen. Geben Sie beispielsweise an $(Rev:rr)
, ob die Rev
Zahl mit 01
, 02
usw. beginnen soll.
Wenn Sie einen Nullabstand Rev
als Teil eines Versionsnummernschemas verwenden, beachten Sie, dass einige Pipelineaufgaben oder beliebte Tools wie NuGet-Pakete die führenden Nullen entfernen. Dieses Verhalten führt dazu, dass eine Versionsnummernkonflikt in den erzeugten Artefakten auftritt.
Ausdrücke
Wenn Sie einen Ausdruck verwenden, um die Buildnummer festzulegen, können Sie einige Token nicht verwenden, da ihre Werte nicht zum Zeitpunkt der Auswertung von Ausdrücken festgelegt werden. Zu diesen Token gehören $(Build.BuildId)
, $(Build.BuildURL)
und $(Build.BuildNumber)
.
Variablen
Sie können benutzerdefinierte und vordefinierte Variablen in Ihrer Buildnummer verwenden. Wenn Sie beispielsweise definieren My.Variable
, können Sie das folgende Zahlenformat angeben:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
Im vorherigen 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 Laufnummer sein, und welche Zeichen kann ich verwenden?
Ausführungsnummern können bis zu 255 Zeichen lang sein. Sie können die Zeichen "
, , /
, , :
<
, , >
, '
|
, ?
, , , @
oder , *
oder , nicht verwenden, und Sie können die Zahl nicht mit .
beenden.
In welcher Zeitzone werden die Werte für die Buildnummer angegeben?
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, und der Wert ändert sich je nach .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)'
Wie kann ich innerhalb eines Skripts auf die Ausführungsnummervariable verweisen?
Sie können eine neue Variable definieren, die die Ausführungsnummer enthält, oder die Ausführungsnummer direkt aufrufen. Im folgenden Beispiel handelt es sich um eine neue Variable, $(MyRunNumber)
die die Ausführungsnummer enthält. Sie können die Ausführungsnummervariable mithilfe MyRunNumber
oder $(Build.BuildNumber)
.
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)