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.2nä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.1nä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, 02och 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.Variablekan 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)

Definiera variabler