Körnings- och byggnummer
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Den här artikeln beskriver hur Azure Pipelines skapar tal och körningsnummer och hur du kan anpassa dem i dina pipelines.
Körningsnumret används för att identifiera en specifik körning av en pipeline eller en bygge. Versionsnumret är synonymt med körningsnumret.
Om du inte anger ett byggnamn i YAML-pipelines, eller om du lämnar fältet Namn tomt i klassiska pipelines, får din körning ett unikt heltal som namn. Du kan ge körningar mer användbara namn som är meningsfulla för ditt team. Du kan använda en kombination av token, variabler och understreckstecken i byggnamn.
I YAML-pipelines anropas name
egenskapen build name och måste finnas på rotnivån för en pipeline. Objekt som anges på rotnivån för en YAML-fil är pipelineegenskaper .
Kommentar
Egenskapen name
fungerar inte i mallfiler.
Följande exempelkod matar ut ett anpassat versionsnummer som project_def_master_202408281.
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:r)
steps:
- script: echo '$(Build.BuildNumber)'
Körningstal
Standardvärdet för ett körningsnummer i Azure Pipelines är $(Date:yyyyMMdd).$(Rev:r)
. $(Rev:r)
är ett särskilt variabelformat som bara fungerar i byggnummerfältet. När en bygge har slutförts, om inget annat i versionsnumret har ändrats, Rev
ökar heltalsvärdet med ett.
$(Rev:r)
återställs till 1
när någon annan del av versionsnumret ändras. Om du till exempel konfigurerar versionsnummerformatet som $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
återställs versionsnumret när datumet ändras.
Om det tidigare versionsnumret var MyBuild_20230621.1
är MyBuild_20230621.2
nästa versionsnummer den dagen . Det första versionsnumret nästa dag är MyBuild_20230622.1
.
$(Rev:r)
återställs också till 1
om du ändrar versionsnumret för att ange en versionsändring. Om versionsformatet till exempel är 1.0.$(Rev:r)
och ditt senaste versionsnummer var 1.0.3
, om du ändrar versionsnumret till 1.1.$(Rev:r)
, är 1.1.1
nästa versionsnummer .
Exempel
Överväg följande data för en byggkörning:
- Projektnamn: Fabrikam
- Pipelinenamn: CIBuild
- Gren: main
- Build ID/Run ID: 752
- Datum: 6 maj 2024
- Tid: 21:07:03
- En körning slutfördes tidigare idag.
Om du anger följande versionsnummerformat får den andra körningen den 6 maj 2024 namnet Fabrikam_CIBuild_main_20240506.2.
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
Token
I följande tabell visas hur varje token matchar, baserat på föregående exempel. Du kan bara använda dessa token för att definiera körningsnummer. De fungerar inte någon annanstans i en pipeline.
Token | Exempelvärde | Kommentar |
---|---|---|
$(Build.DefinitionName) |
CIBuild | Pipelinenamnet får inte innehålla ogiltiga tecken eller blankstegstecken. |
$(Build.BuildId) |
752 | $(Build.BuildId) är ett internt, oföränderligt ID, även kallat Kör-ID, som är unikt i Hela Azure DevOps-organisationen. |
$(DayOfMonth) |
6 | |
$(DayOfYear) |
126 | |
$(Hours) |
21 | |
$(Minutes) |
7 | |
$(Month) |
5 | |
$(Rev:r) |
2 | Den tredje dagliga körningen är 3 , och så vidare. Använd $(Rev:r) för att säkerställa att varje slutförd version har ett unikt namn. |
$(Date:yyyyMMdd) |
20240506 | Du kan ange andra datumformat, till exempel $(Date:MMddyy) . |
$(Seconds) |
3 | |
$(SourceBranchName) |
main | |
$(TeamProject) |
Fabrikam | |
$(Year:yy) |
24 | |
$(Year:yyyy) |
2024 |
Viktigt!
Om du vill visa prefixet nollor i körningsnumret kan du lägga till fler r
tecken i Rev
token. Ange till exempel $(Rev:rr)
om du vill Rev
att talet ska börja med 01
, 02
och så vidare.
Om du använder ett noll-vadderat Rev
som en del av ett versionsnumreringsschema bör du tänka på att vissa pipelineuppgifter eller populära verktyg, till exempel NuGet-paket, tar bort de inledande nollorna. Det här beteendet orsakar ett versionsnummermatchningsfel i artefakterna som skapas.
Uttryck
Om du använder ett uttryck för att ange versionsnumret kan du inte använda vissa token eftersom deras värden inte anges när uttrycken utvärderas. Dessa token inkluderar $(Build.BuildId)
, $(Build.BuildURL)
och $(Build.BuildNumber)
.
Variabler
Du kan använda användardefinierade och fördefinierade variabler i ditt versionsnummer. Om du till exempel definierar My.Variable
kan du ange följande nummerformat:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
I föregående exempel är de första fyra variablerna fördefinierade. Information om hur du definierar användarvariabler finns i Ange variabler i pipelines.
Vanliga frågor
Hur stort kan ett körningsnummer vara och vilka tecken kan jag använda?
Körningsnummer kan vara upp till 255 tecken. Du kan inte använda tecknen "
, , /
:
, <
, >
, '
, , |
, ?
, @
, eller , och *
du kan inte avsluta talet med .
.
Vilken tidszon uttrycks tidsvärdena för versionsnummer i?
Tidszonen är UTC.
Tidszonen är samma som tidszonen för operativsystemet på den dator som kör programnivåservern.
Hur ställer jag in versionsnumret dynamiskt med villkor?
Du kan använda variabler som en del av ditt körningsnummer. I följande exempel används variabeln why
som en del av körningsnumret och dess värde ändras beroende på 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)'
Hur refererar jag till körningsnummervariabeln i ett skript?
Du kan definiera en ny variabel som innehåller körningsnumret eller anropa körningsnumret direkt. I följande exempel $(MyRunNumber)
är en ny variabel som innehåller körningsnumret. Du kan anropa körningsnummervariabeln med hjälp MyRunNumber
av eller $(Build.BuildNumber)
.
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)