執行和建置編號
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文說明如何建構 Azure Pipelines 組建編號和執行編號,以及如何在管線中自定義它們。
執行編號可用來識別管線或組建的特定執行。 組建編號與執行編號同義。
如果您未在 YAML 管線中指定組建名稱,或將 [名稱] 字段保留為 [傳統管線] 中的空白,則執行會取得唯一的整數做為其名稱。 您可以為您的小組提供更實用的名稱。 您可以在組建名稱中使用標記、變數和底線字元的組合。
在 YAML 管線中,會呼叫 name
組建名稱屬性,而且必須位於管線的根層級。 YAML 檔案根層級指定的專案是 管線 屬性。
注意
屬性 name
不適用於範本檔案。
下列範例程式代碼會輸出自定義的組建編號,例如 project_def_master_202408281。
name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:r)
steps:
- script: echo '$(Build.BuildNumber)'
回合號碼
Azure Pipelines 中執行編號的預設值為 $(Date:yyyyMMdd).$(Rev:r)
。 $(Rev:r)
是只能在組建編號欄位中運作的特殊變數格式。 當組建完成時,如果組建編號中沒有任何其他項目變更,整數值就會 Rev
增加一個。
$(Rev:r)
1
當組建編號的任何其他部分變更時,會重設為 。 例如,如果您將組建編號格式設定為 $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r)
,則組建編號會在日期變更時重設。
如果先前的組建編號是 MyBuild_20230621.1
,則當天的下一個組建編號為 MyBuild_20230621.2
。 第二天的第一個組建編號是 MyBuild_20230622.1
。
$(Rev:r)
如果您變更組建編號以指出版本變更,也會重設為 1
。 例如,如果您的組建格式是 1.0.$(Rev:r)
,而最後一個組建編號是 ,如果您將組建編號變更為 1.0.3
1.1.$(Rev:r)
,則下一個組建編號為 1.1.1
。
範例
針對組建執行,請考慮下列數據:
- 項目名稱:Fabrikam
- 管線名稱:CIBuild
- 分支: master
- 組建標識碼/執行標識碼:752
- 日期:2024 年 5 月 6 日
- 時間:下午 9:07:03
- 今天早些時候已完成一次執行。
如果您指定下列組建編號格式,則 2024 年 5 月 6 日的第二個執行會命名 為 Fabrikam_CIBuild_main_20240506.2。
$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)
語彙基元
下表顯示每個令牌如何根據上一個範例解析。 您只能使用這些令牌來定義執行編號。 它們無法在管線中其他地方運作。
Token | 範例值 | 備註 |
---|---|---|
$(Build.DefinitionName) |
CIBuild | 管線名稱不能包含無效或空格符。 |
$(Build.BuildId) |
7:52 | $(Build.BuildId) 是內部且不可變的標識碼,也稱為「執行標識符」,在 Azure DevOps 組織中是唯一的。 |
$(DayOfMonth) |
6 | |
$(DayOfYear) |
126 | |
$(Hours) |
21 | |
$(Minutes) |
7 | |
$(Month) |
5 | |
$(Rev:r) |
2 | 第三次每日執行是 3 ,依此方式。 使用 $(Rev:r) 以確保每個已完成的組建都有唯一的名稱。 |
$(Date:yyyyMMdd) |
20240506 | 您可以指定其他日期格式,例如 $(Date:MMddyy) 。 |
$(Seconds) |
3 | |
$(SourceBranchName) |
main | |
$(TeamProject) |
Fabrikam | |
$(Year:yy) |
24 | |
$(Year:yyyy) |
2024 |
重要
如果您想要在執行編號中顯示前置詞零,您可以將更多 r
字元新增至 Rev
令牌。 例如,指定$(Rev:rr)
是否要以 、 02
等開頭01
的數位Rev
。
如果您使用零填補 Rev
做為版本編號配置的一部分,請注意某些管線工作或熱門工具,例如 NuGet 套件,請移除前置零。 此行為會導致產生成品中的版本號碼不符。
運算式
如果您使用表達式來設定組建編號,就無法使用某些標記,因為評估表達式時不會設定其值。 這些權杖包括 $(Build.BuildId)
、 $(Build.BuildURL)
與 $(Build.BuildNumber)
。
變數
您可以在組建編號中使用使用者定義的和預先定義的變數。 例如,如果您定義 My.Variable
,您可以指定下列數位格式:
$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)
在上述範例中,會預先定義前四個變數。 如需如何定義用戶變數的資訊,請參閱 在管線中設定變數。
常見問題集
執行編號的大小,以及可以使用哪些字元?
執行數位最多可達 255 個字元。 您無法使用字元 "
、、、:
<
、>
、、、'
、|
、、?
@
或 *
,而且不能以 結束數位.
。 /
建置編號時間值所表示的時區為何?
時區為UTC。
時區與執行應用層伺服器之電腦操作系統的時區相同。
如何以條件動態設定組建編號?
您可以使用變數作為執行編號的一部分。 在下列範例中,變數 why
會當做執行編號的一部分使用,而其值會根據 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)'
如何參考文本中的執行編號變數?
您可以定義包含執行號碼的新變數,或直接呼叫執行號碼。 在下列範例中, $(MyRunNumber)
是包含執行編號的新變數。 您可以使用 或$(Build.BuildNumber)
呼叫執行號碼變數MyRunNumber
。
# Set MyRunNumber
variables:
MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'
steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)