Udostępnij za pośrednictwem


Numery wersji i kompilacji

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

W tym artykule wyjaśniono, jak są konstruowane numery kompilacji i numery przebiegów w usłudze Azure Pipelines oraz jak można je dostosować w swoich potokach.

Numer przebiegu służy do identyfikowania konkretnego wykonania potoku lub kompilacji. Numer kompilacji jest synonimem numeru przebiegu.

Jeśli nie określisz nazwy kompilacji w potokach YAML lub pozostaw pole Nazwa puste w potokach klasycznych, przebieg otrzyma unikatową liczbę całkowitą jako nazwę. Możesz nadawać przebiegom bardziej użyteczne nazwy, które będą znaczące dla twojego zespołu. Możesz użyć kombinacji tokenów, zmiennych i znaków podkreślenia w nazwach kompilacji.

W potokach YAML name jest właściwością nazwy kompilacji i musi być na najwyższym poziomie potoku. Elementy określone na poziomie głównym pliku YAML są właściwościami potoku .

Uwaga

Właściwość name nie działa w plikach szablonów.

Poniższy przykładowy kod generuje dostosowany numer kompilacji, taki jak project_def_master_202408281.

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

steps:
  - script: echo '$(Build.BuildNumber)'

Nr przebiegu

Wartość domyślna numeru przebiegu w usłudze Azure Pipelines to $(Date:yyyyMMdd).$(Rev:r). $(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 zmieni się, wartość całkowita Rev zwiększa się o jeden.

$(Rev:r) resetuje się do 1, gdy zmienia się jakakolwiek inna część numeru kompilacji. Jeśli na przykład skonfigurujesz format numeru kompilacji jako $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), numer kompilacji zostanie zresetowany po zmianie daty.

Jeśli poprzedni numer kompilacji to MyBuild_20230621.1, następnym numerem kompilacji tego dnia jest MyBuild_20230621.2. Pierwszy numer kompilacji następnego dnia to MyBuild_20230622.1.

$(Rev:r) Również resetuje się do 1 , jeśli zmienisz numer kompilacji, aby wskazać zmianę wersji. Jeśli na przykład format kompilacji to 1.0.$(Rev:r) , a ostatni numer kompilacji to 1.0.3, jeśli zmienisz numer kompilacji na 1.1.$(Rev:r), następnym numerem kompilacji jest 1.1.1.

Przykład

Rozważ następujące dane dotyczące przebiegu kompilacji:

  • Nazwa projektu: Fabrikam
  • Nazwa potoku: CIBuild
  • Gałąź: główna
  • Identyfikator kompilacji/identyfikator uruchomienia: 752
  • Data: 6 maja 2024 r.
  • Czas: 19:07:03
  • Jeden bieg został ukończony dzisiaj wcześniej.

Jeśli określisz następujący format numeru kompilacji, drugie uruchomienie 6 maja 2024 r. nosi nazwę Fabrikam_CIBuild_main_20240506.2.

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

Tokeny

W poniższej tabeli przedstawiono sposób rozpoznawania poszczególnych tokenów na podstawie poprzedniego przykładu. Tych tokenów można używać tylko do definiowania numerów przebiegów. Nie działają nigdzie indziej w rurze.

Token Przykładowa wartość Uwagi
$(Build.DefinitionName) CIBuild 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, który jest unikatowy w całej organizacji usługi Azure DevOps.
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 Trzeci codzienny przebieg to 3, i tak dalej. Użyj $(Rev:r) polecenia , aby upewnić się, że każda ukończona kompilacja ma unikatową nazwę.
$(Date:yyyyMMdd) 20240506 Możesz określić inne formaty dat, takie jak $(Date:MMddyy).
$(Seconds) 3
$(SourceBranchName) główny
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

Ważne

Jeśli chcesz wyświetlić zera początkowe w numerze przebiegu, możesz dodać więcej znaków r do tokenu Rev. Na przykład określ $(Rev:rr) , czy liczba Rev ma zaczynać się od 01, 02itd.

Jeśli używasz zera wiodącego Rev jako część schematu numerowania wersji, pamiętaj, że niektóre zadania potoku lub popularne narzędzia, takie jak pakiety NuGet, usuwają zera wiodące. To zachowanie powoduje niezgodność numerów wersji w wygenerowanych artefaktach.

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, gdy wyrażenia są oceniane. Te tokeny obejmują $(Build.BuildId), $(Build.BuildURL)i $(Build.BuildNumber).

Zmienne

W numerze kompilacji można użyć zmiennych zdefiniowanych przez użytkownika i wstępnie zdefiniowanych. Jeśli na przykład zdefiniujesz My.Variable, możesz określić następujący format liczbowy:

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

W poprzednim przykładzie pierwsze cztery zmienne są wstępnie zdefiniowane. Aby uzyskać informacje na temat definiowania zmiennych użytkownika, zobacz Ustawianie zmiennych w potokach.

Często zadawane pytania

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

Numery przebiegów mogą mieć maksymalnie 255 znaków. Nie można używać znaków ", /, \, :, <, >, ', |, ?, @lub *, i nie można zakończyć liczby przy użyciu ..

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

Strefa czasowa to UTC.

Strefa czasowa jest taka sama jak strefa czasowa systemu operacyjnego maszyny z uruchomionym serwerem warstwy aplikacji.

Jak dynamicznie ustawić numer kompilacji pod określonymi warunkami?

Możesz używać zmiennych jako część numeru przebiegu. W poniższym przykładzie zmienna why jest używana jako część numeru przebiegu, a jej wartość zmienia się w zależności od 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)'

Jak mogę odnosić się do zmiennej numeru przebiegu w skrypcie?

Możesz zdefiniować nową zmienną zawierającą numer przebiegu lub wywołać numer przebiegu bezpośrednio. W poniższym przykładzie $(MyRunNumber) to nowa zmienna, która zawiera numer przebiegu. Zmienną numeru przebiegu można wywołać za pomocą polecenia MyRunNumber lub $(Build.BuildNumber).

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

steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)

Definiowanie zmiennych