Konfigurowanie numerów przebiegu lub kompilacji

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Możesz dostosować sposób numeracji przebiegów potoku. Wartość domyślna dla numeru przebiegu to $(Date:yyyyMMdd).$(Rev:r).

W usłudze Azure DevOps $(Rev:r) jest specjalnym formatem zmiennej, który działa tylko w polu numer kompilacji. Po zakończeniu kompilacji, jeśli nic innego w numerze kompilacji nie uległo zmianie, wartość całkowita Rev zwiększa się o jedną.

$(Rev:r) resetuje się podczas zmiany części numeru kompilacji. Jeśli na przykład skonfigurowano format numeru kompilacji jako $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), numer kompilacji zostanie zresetowany, gdy data zmieni się następnego dnia. Jeśli numer kompilacji to MyBuild_20230621.1, następnym numerem kompilacji tego dnia jest MyBuild_20230621.2. Następnego dnia numer kompilacji to MyBuild_20230622.1.

Jeśli format numeru kompilacji to 1.0.$(Rev:r), numer kompilacji zostanie zresetowany podczas 1.0.1 zmiany części numeru. Jeśli na przykład numer ostatniej kompilacji to 1.0.3, a numer kompilacji zmieni się tak, aby 1.1.$(Rev:r) wskazywał zmianę wersji, następnym numerem kompilacji jest 1.1.1.

W języku YAML ta właściwość jest wywoływana name i musi znajdować się na poziomie głównym potoku.

Uwaga

Elementy określone na poziomie głównym pliku YAML są właściwościami potoku .

Jeśli nie zostanie określony, przebieg otrzymuje unikatową liczbę całkowitą jako nazwę. Możesz nadać przebiegom znacznie bardziej przydatne nazwy, które mają znaczenie dla twojego zespołu. Można użyć kombinacji tokenów, zmiennych i znaków podkreślenia. Właściwość name nie działa w plikach szablonów.

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

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

Kompilacje YAML nie są jeszcze dostępne na serwerze TFS.

Przykład

W tym czasie uruchamiane jest uruchomienie:

  • Nazwa projektu: Fabrikam

  • Nazwa potoku: CIBuild

  • Gałąź: główna

  • Identyfikator kompilacji/identyfikator uruchomienia: 752

  • Data: 5 maja 2019 r.

  • Czas: 19:07:03.

  • Jedno uruchomienie zostało ukończone wcześniej dzisiaj.

Jeśli określisz ten format numeru kompilacji:

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

Następnie drugi przebieg tego dnia nosi nazwę: Fabrikam_CIBuild_main_20190505.2

Tokeny

W poniższej tabeli pokazano, jak każdy token jest rozpoznawany na podstawie poprzedniego przykładu. Tych tokenów można użyć tylko do zdefiniowania numeru przebiegu; nie działają nigdzie indziej w potoku.

Token Przykładowa wartość zastępcza
$(Build.DefinitionName) CIBuild

Uwaga: nazwa potoku nie może zawierać nieprawidłowych ani białych znaków.
$(Build.BuildId) 752

$(Build.BuildId) jest wewnętrznym niezmiennym identyfikatorem nazywanym również identyfikatorem przebiegu. Jest ona unikatowa w całej organizacji.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (Trzeci przebieg to 3 itd.)

Użyj elementu $(Rev:r), aby upewnić się, że każda ukończona kompilacja ma unikatową nazwę. Po uruchomieniu kompilacji, jeśli nic innego w numerze kompilacji nie uległo zmianie, wartość Rev integer jest zwiększana o jeden.

Jeśli chcesz pokazać zera prefiksów w liczbie, możesz dodać więcej znaków "r". Na przykład określ wartość $(Rev:rr), jeśli chcesz, aby numer Rev rozpoczął się od 01, 02 itd. Jeśli jako część schematu numerowania wersji używasz wyrównywanego zera, należy pamiętać, że niektóre zadania potoku lub popularne narzędzia, takie jak pakiety NuGet, usuwają zera wiodące, co powoduje niezgodność numerów wersji w generowanych artefaktach.
$(Date:yyyyMMdd) 20090824

Możesz określić inne formaty dat, takie jak $(Date:MMddyyy)
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Zmienne

Można również użyć zmiennych zdefiniowanych przez użytkownika i wstępnie zdefiniowanych, które mają zakres "Wszystkie" w numerze. Jeśli na przykład zdefiniowano My.Variableparametr , możesz określić następujący format liczb:

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

Pierwsze cztery zmienne są wstępnie zdefiniowane. My.Variable program jest definiowany przez Użytkownika na karcie zmiennych.

Wyrażenia

Jeśli używasz wyrażenia do ustawiania numeru kompilacji, nie możesz użyć niektórych tokenów, ponieważ ich wartości nie są ustawiane podczas obliczania wyrażeń czasu. Te tokeny obejmują $(Build.BuildId), $(Build.BuildURL)i $(Build.BuildNumber).

Często zadawane pytania

Jak duży może być numer uruchomienia i jakie znaki można użyć?

Przebiegi mogą mieć maksymalnie 255 znaków. Niedozwolone znaki obejmują ", , /, '<:|?>@i .* Nie można kończyć elementem ..

W jakiej strefie czasowej są wyrażone wartości czasu liczby kompilacji?

Strefa czasowa to UTC.

Strefa czasowa jest taka sama jak strefa czasowa systemu operacyjnego maszyny, na której jest uruchomiony serwer warstwy aplikacji.

Jak można odwołać się do zmiennej numeru przebiegu w skrycie?

Zmienna numeru przebiegu może być wywoływana za pomocą $(Build.BuildNumber)polecenia . Możesz zdefiniować nową zmienną zawierającą numer przebiegu lub wywołać numer przebiegu bezpośrednio. W tym przykładzie jest to nowa zmienna zawierająca $(MyRunNumber) numer przebiegu.

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


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

Jak dynamicznie ustawić numer kompilacji z warunkami?

Zmienne można używać w ramach numeru przebiegu. W tym przykładzie zmienna why zmienia się w zależności od Build.Reason wartości i jest używana jako część numeru przebiegu.

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