設定執行或組建編號

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和舊版中,組建和發行管線稱為定義、執行稱為組建服務連線稱為服務端點階段稱為環境,而作業稱為階段

您可以自訂管線執行編號的方式。 執行編號的預設值為 $(Date:yyyyMMdd).$(Rev:r)

在 YAML 中,會呼叫 name 這個屬性,而且位於管線的根層級。 如果未指定,您的回合會以唯一的整數作為其名稱。 您可以為小組提供更實用的名稱。 您可以使用標記、變數和底線字元的組合。

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

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

TFS 上尚未提供 YAML 組建。

範例

執行開始時:

  • 專案名稱:Fabrikam

  • 管線名稱:CIBuild

  • 分支:master

  • 組建識別碼/執行識別碼:752

  • 日期:2019 年 5 月 5 日。

  • 時間:下午 9:07:03。

  • 今天稍早完成的一次執行。

如果您指定此組建編號格式:

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

然後,第二次執行日期會命名為: Fabrikam_CIBuild_master_20190505.2

權杖

下表說明如何根據上一個範例解析每個權杖。 您只能使用這些權杖來定義執行編號;它們無法在管線中的其他位置運作。

Token 取代值範例
$(Build.DefinitionName) CIBuild

注意:管線名稱不得包含無效或空白字元。
$(Build.BuildId) 752

$ (Build.BuildId) 是內部不可變的識別碼,也稱為執行識別碼。 在整個組織中都是唯一的。
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (第三次執行會是 3,依此類)

使用 $ (Rev:r) ,以確保每個已完成的組建都有唯一的名稱。 當組建啟動時,如果組建編號中沒有其他專案變更,Rev 整數值就會遞增一。

如果您想要在數位中顯示前置詞零,可以新增額外的 'r' 字元。 例如,如果您希望 Rev 號碼以 01、02 等開頭,請指定 $ (Rev:rr) 。 如果您使用零填補的 Rev 作為版本編號配置的一部分,請注意,某些管線工作或熱門工具,例如 NuGet 套件,請移除前置零,這會導致產生成品中的版本號碼不符。
$(Date:yyyyMMdd) 20090824

您可以指定其他日期格式,例如 $ (Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) master
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

變數

您也可以在數位中使用範圍為 「All」 的使用者定義和預先定義變數。 例如,如果您已定義 My.Variable ,您可以指定下列數位格式:

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

前四個變數已預先定義。 My.Variable 是由您在 [變數] 索引標籤上定義。

運算式

如果您使用運算式來設定組建編號,則無法使用某些標記,因為評估運算式時不會設定其值。 這些權杖包括 $(Build.BuildId)$(Build.BuildURL)$(Build.BuildNumber)

常見問題集

執行數位的大小是多少?

執行最多可以有 255 個字元。

組建編號時間值在哪個時區表示?

時區是 UTC。

時區與您執行應用層伺服器之電腦的作業系統時區相同。

如何在腳本中參考執行數位變數?

您可以使用 呼叫 $(Build.BuildNumber) 執行編號變數。 您可以定義包含執行號碼的新變數,或直接呼叫執行號碼。 在此範例中, $(MyRunNumber) 是包含執行編號的新變數。

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


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

如何使用條件動態設定組建編號?

您可以使用變數作為執行編號的一部分。 在此範例中,變數 why 會根據 Build.Reason 變更,並做為執行編號的一部分使用。

variables:
  ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
    why: pr
  ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
    why: manual
  ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
    why: indivci 
  ${{ else }}:
    why: other

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

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)' ## output run number