Futtatási vagy buildelési számok konfigurálása

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

Testre szabhatja a folyamatfuttatások számozását. A futtatási szám alapértelmezett értéke a $(Date:yyyyMMdd).$(Rev:r)következő.

Az Azure DevOps $(Rev:r) egy speciális változóformátum, amely csak a buildszám mezőben működik. Ha egy build befejeződött, ha a buildszámban semmi más nem változott, az Rev egész szám értéke eggyel nő.

$(Rev:r) a buildszám egy részének módosításakor alaphelyzetbe áll. Ha például a buildszám formátumát $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)konfigurálta, akkor a buildszám a következő napon történő módosításkor alaphelyzetbe áll. Ha a buildszám az MyBuild_20230621.1, akkor a következő buildszám aznap lesz MyBuild_20230621.2. A következő napon a build száma .MyBuild_20230622.1

Ha a buildszám formátuma az 1.0.$(Rev:r), akkor a buildszám a szám egy részének 1.0.1 módosításakor visszaáll. Ha például az utolsó buildszám volt 1.0.3, és a buildszámot úgy módosítja, hogy 1.1.$(Rev:r) a verzióváltoztatást jelezze, a következő buildszám a következő 1.1.1.

A YAML-ben a rendszer meghívja name ezt a tulajdonságot, és a folyamat gyökérszintjén kell lennie.

Feljegyzés

A YAML-fájlok gyökérszintjén megadott elemek folyamattulajdonságok.

Ha nincs megadva, a futtatás neve egyedi egész szám lesz. Sokkal hasznosabb neveket adhat a futtatásoknak, amelyek hasznosak a csapat számára. Jogkivonatok, változók és aláhúzásjelek kombinációját is használhatja. A name tulajdonság nem működik sablonfájlokban.

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

steps:
  - script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1

A YAML-buildek még nem érhetők el a TFS-en.

Példa

Ekkor elindul egy futtatás:

  • Projekt neve: Fabrikam

  • Folyamat neve: CIBuild

  • Ág: fő

  • Buildazonosító/futtatás azonosítója: 752

  • Dátum: 2019. május 5.

  • Időpont: 21:07:03.

  • Az egyik futtatás a mai napon befejeződött.

Ha ezt a buildszámformátumot adja meg:

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

Ezután a második futtatás ezen a napon a következő nevet kapta: Fabrikam_CIBuild_main_20190505.2

Tokenek

Az alábbi táblázat bemutatja, hogyan oldja fel az egyes jogkivonatokat az előző példa alapján. Ezeket a jogkivonatokat csak futtatási szám definiálására használhatja; a folyamat más részén nem működnek.

Jogkivonat Példa csereértékre
$(Build.DefinitionName) CIBuild

Megjegyzés: A folyamat neve nem tartalmazhat érvénytelen vagy üres szóköz karaktereket.
$(Build.BuildId) 752

A $(Build.BuildId) egy belső, nem módosítható azonosító, amelyet futtatási azonosítónak is neveznek. Ez a vállalaton belül egyedülálló.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (A harmadik futtatás 3, és így tovább.)

A $(Rev:r) használatával győződjön meg arról, hogy minden befejezett build egyedi névvel rendelkezik. Amikor elindul egy build, ha a buildszámban semmi más nem változott, a Rev egész szám értéke eggyel növekszik.

Ha nullákat szeretne megjeleníteni a számban, további "r" karaktereket is hozzáadhat. Adja meg például a $(Rev:rr) értéket, ha azt szeretné, hogy a Rev szám 01, 02 és így tovább legyen. Ha egy verziószámozási séma részeként nulla párnázott Rev értéket használ, vegye figyelembe, hogy egyes folyamatfeladatok vagy népszerű eszközök, például a NuGet-csomagok eltávolítják a kezdő nullákat, ami a létrehozott összetevőkben eltérő verziószám-eltérést okoz.
$(Date:yyyyMMdd) 20090824

Más dátumformátumokat is megadhat, például $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Változók

Felhasználó által definiált és előre definiált változókat is használhat, amelyek a számban az "Összes" hatókörrel rendelkeznek. Ha például definiálta My.Variable, a következő számformátumot adhatja meg:

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

Az első négy változó előre definiálva van. My.VariableA változók lapon ön határozza meg.

Kifejezések

Ha kifejezéssel állítja be a buildszámot, nem használhat jogkivonatokat, mert az értékek nincsenek beállítva a kifejezések kiértékelésének időpontjában. Ezek a jogkivonatok a következők: $(Build.BuildId), $(Build.BuildURL)és $(Build.BuildNumber).

GYIK

Mekkora lehet egy futtatási szám, és milyen karaktereket használhatok?

A futtatások legfeljebb 255 karakter hosszúságúak lehetnek. A nem engedélyezett karakterek közé tartoznak a "következők: , /, :, <, >, |', , ?, @és *. Nem végződhet egy ..

Milyen időzónában fejezik ki a buildszám időértékét?

Az időzóna UTC.

Az időzóna ugyanaz, mint annak a gépnek az operációs rendszerének időzónája, amelyen az alkalmazásréteg-kiszolgálót futtatja.

Hogyan hivatkozhat a futtatási szám változóra egy szkripten belül?

A futtatási szám változó meghívható a következővel $(Build.BuildNumber): . Megadhat egy új változót, amely tartalmazza a futtatási számot, vagy meghívhatja közvetlenül a futtatási számot. Ebben a példában egy új változó található, $(MyRunNumber) amely tartalmazza a futtatási számot.

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


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

Hogyan állíthatom be dinamikusan a buildszámot feltételekkel?

A futtatási szám részeként változókat is használhat. Ebben a példában a változó why a futtatási számtól függően Build.Reason változik, és a futtatási szám részeként használatos.

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