Share via


Konfigurera körnings- eller byggnummer

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Du kan anpassa hur dina pipelinekörningar numreras. Standardvärdet för körningsnummer är $(Date:yyyyMMdd).$(Rev:r).

I Azure DevOps $(Rev:r) är ett speciellt variabelformat som bara fungerar i fältet build number. När en version har slutförts ökar heltalsvärdet med ett om inget annat i versionsnumret har ändrats Rev .

$(Rev:r) återställs när du ändrar en del av versionsnumret. Om du till exempel har konfigurerat versionsnummerformatet som $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)återställs versionsnumret när datumet ändras nästa dag. Om ditt versionsnummer är MyBuild_20230621.1är MyBuild_20230621.2nästa versionsnummer den dagen . Nästa dag är MyBuild_20230622.1versionsnumret .

Om versionsnummerformatet är 1.0.$(Rev:r)återställs versionsnumret till 1.0.1 när du ändrar en del av talet. Om ditt senaste versionsnummer till exempel var 1.0.3, och du ändrar versionsnumret till 1.1.$(Rev:r) för att ange en versionsändring, är 1.1.1nästa versionsnummer .

I YAML anropas name den här egenskapen och måste finnas på rotnivån för en pipeline.

Kommentar

Objekt som anges på rotnivån för en YAML-fil är pipelineegenskaper .

Om det inte anges får körningen ett unikt heltal som namn. Du kan ge körningar mycket mer användbara namn som är meningsfulla för ditt team. Du kan använda en kombination av token, variabler och understreckstecken. Egenskapen name fungerar inte i mallfiler.

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-versioner är ännu inte tillgängliga på TFS.

Exempel

Vid den tidpunkten startas en körning:

  • Projektnamn: Fabrikam

  • Pipelinenamn: CIBuild

  • Gren: main

  • Build ID/Run ID: 752

  • Datum: 5 maj 2019.

  • Tid: 21:07:03.

  • En körning slutfördes tidigare idag.

Om du anger det här versionsnummerformatet:

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)

Sedan skulle den andra körningen den här dagen namnges: Fabrikam_CIBuild_main_20190505.2

Token

I följande tabell visas hur varje token matchas baserat på föregående exempel. Du kan bara använda dessa token för att definiera ett körningsnummer. de fungerar inte någon annanstans i pipelinen.

Token Exempel på ersättningsvärde
$(Build.DefinitionName) CIBuild

Obs! Pipelinenamnet får inte innehålla ogiltiga tecken eller blankstegstecken.
$(Build.BuildId) 752

$(Build.BuildId) är ett internt oföränderligt ID som även kallas kör-ID. Det är unikt i hela organisationen.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (Den tredje 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. När en version startar, om inget annat i versionsnumret har ändrats, ökas värdet för Rev-heltal med en.

Om du vill visa prefixet nollor i talet kan du lägga till fler r-tecken . Ange till exempel $(Rev:rr) om du vill att Rev-numret ska börja med 01, 02 och så vidare. Om du använder ett nollfyllt rev som en del av ett versionsnumreringsschema bör du observera att vissa pipelineuppgifter eller populära verktyg, till exempel NuGet-paket, tar bort de inledande nollorna, vilket orsakar ett versionsnummermatchningsfel i artefakterna som skapas.
$(Date:yyyyMMdd) 20090824

Du kan ange andra datumformat som $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Variabler

Du kan också använda användardefinierade och fördefinierade variabler som har omfånget "Alla" i ditt nummer. Om du till exempel har definierat My.Variablekan du ange följande nummerformat:

$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)

De första fyra variablerna är fördefinierade. My.Variabledefinieras av dig på fliken variabler.

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 uttryck utvärderas. Dessa token inkluderar $(Build.BuildId), $(Build.BuildURL)och $(Build.BuildNumber).

Vanliga frågor

Hur stort kan ett körningsnummer vara och vilka tecken kan jag använda?

Körningar kan vara upp till 255 tecken. Tecken som inte tillåts är , , , , , , ', |, ?, @och *. ><:/" Du kan inte sluta med en ..

I vilken tidszon uttrycks tidsvärdena för versionsnummer?

Tidszonen är UTC.

Tidszonen är samma som tidszonen för operativsystemet på den dator där du kör programnivåservern.

Hur refererar du till körningsnummervariabeln i ett skript?

Körningsnummervariabeln kan anropas med $(Build.BuildNumber). Du kan definiera en ny variabel som innehåller körningsnumret eller anropa körningsnumret direkt. I det här exemplet $(MyRunNumber) är en ny variabel som innehåller körningsnumret.

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'


steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number

Hur ställer jag in versionsnumret dynamiskt med villkor?

Du kan använda variabler som en del av ditt körningsnummer. I det här exemplet ändras variabeln why beroende på Build.Reason och används som en del av körningsnumret.

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