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
, 02
itd.
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.Variable
wartość , 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.Reason
wartoś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)