Udostępnij za pośrednictwem


Uruchamianie i numery 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 usługi Azure Pipelines oraz jak można je dostosować w 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 nadać przebiegom bardziej przydatne nazwy, które mają znaczenie dla twojego zespołu. Możesz użyć kombinacji tokenów, zmiennych i znaków podkreślenia w nazwach kompilacji.

W potokach YAML wywoływana jest name właściwość nazwa kompilacji i musi być na poziomie głównym 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ę, 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
  • Jedno uruchomienie zostało ukończone wcześniej dzisiaj.

Jeśli określisz następujący format numeru kompilacji, drugi przebieg 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 potoku.

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, itd. 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) main
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

Ważne

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

Jeśli używasz zera Rev w ramach schematu numerowania wersji, pamiętaj, że niektóre zadania potoku lub popularne narzędzia, takie jak pakiety NuGet, usuń 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 podczas obliczania wyrażeń czasu. 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.Variablewartość , 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ć?

Liczba przebiegów może mieć maksymalnie 255 znaków. Nie można używać znaków ", , <|':/?@>lub *, i nie można zakończyć liczby za pomocą polecenia ..

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 z uruchomionym serwerem warstwy aplikacji.

Jak dynamicznie ustawić numer kompilacji z warunkami?

Zmienne można używać w ramach numeru przebiegu. W poniższym przykładzie zmienna why jest używana jako część numeru przebiegu, a jego wartość zmienia się w zależności od Build.Reasonwartości .

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ę odwołać się do zmiennej numeru przebiegu w skry skrycie?

Możesz zdefiniować nową zmienną zawierającą numer przebiegu lub wywołać numer przebiegu bezpośrednio. W poniższym przykładzie jest to nowa zmienna zawierająca $(MyRunNumber) 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