共用方式為


使用預先定義的變數

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

變數提供將重要資料位元匯入管道不同部分的便利方式。 這是可供您使用的預先定義變數清單。 可能有一些其他預先定義的變數,但大部分是供內部使用。

系統會自動設定這些變數,而且是唯讀的。 (例外狀況為 Build.Clean 和 System.Debug。)

在 YAML 管線中,您可以將預先定義的變數參考為環境變數。 例如,變數 Build.ArtifactStagingDirectory 會變成變數 BUILD_ARTIFACTSTAGINGDIRECTORY

針對傳統管線,您可以在部署工作中使用 發行變數 來共用通用資訊(例如環境名稱、資源群組等)。

深入瞭解 如何使用變數

Build.Clean

這是已淘汰的變數,可修改組建代理程式如何清除來源。 若要瞭解如何清除來源,請參閱 清除代理程式上的本機存放庫。

System.AccessToken

System.AccessToken 是一個特殊變數,會攜帶執行中組建所使用的安全性令牌。

在 YAML 中,您必須使用變數明確對應 System.AccessToken 至管線。 您可以在步驟或工作層級執行此動作:

steps:
  - script: |
      echo "Using System.AccessToken to authenticate"
      git clone https://$(System.AccessToken)@dev.azure.com/yourorganization/yourproject/_git/yourrepository
    displayName: 'Clone repository using System.AccessToken'
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

您可以設定使用建置作業授權範圍的預設範圍。System.AccessToken

System.Debug

如需偵錯管線問題的詳細記錄,請定義 System.Debug 並將其設定為 true

  1. 編輯您的管線。

  2. 選取變數

  3. 新增具有名稱和 System.Debugtrue的新變數。

    將系統偵錯設定為 true

  4. 儲存新的變數。

設定 System.Debugtrue 設定所有執行的詳細信息記錄。 您也可以使用 [ 啟用系統診斷] 複選框來設定單一執行的詳細信息記錄

您也可以將 設定System.Debugtrue為 管線或範本中的變數。

variables:
  system.debug: 'true'

當 設定為 時System.Debug,名為 Agent.Diagnostic 的額外變數會設定為 truetrue 當 是 trueAgent.Diagnostic,代理程式會收集更多記錄,以便針對自我裝載代理程式的網路問題進行疑難解答。 如需詳細資訊,請參閱自我裝載式代理程式的網路診斷

注意

Agent.Diagnostic 變數適用於 Agent v2.200.0 和更新版本。

如需詳細資訊,請參閱檢閱記錄以診斷管線問題。

代理程序變數 (DevOps Services)

注意

您可以使用代理程式變數作為腳本中的環境變數,以及做為建置工作中的參數。 您無法使用它們來自定義組建編號,或套用版本控制標籤或標籤。

變數 描述
Agent.BuildDirectory 代理程式上的本機路徑,其中會建立指定組建管線的所有資料夾。 此變數的值與 Pipeline.Workspace相同。 例如: /home/vsts/work/1
Agent.ContainerMapping 從 YAML 中的容器資源名稱對應到運行時間的 Docker 識別碼。

范例如下表。
Agent.HomeDirectory 代理程式安裝到的目錄。 這包括代理程序軟體。 例如: c:\agent
Agent.Id 代理程式的識別碼。
Agent.JobName 執行中作業的名稱。 這通常是「作業」;或 「__default」,但在多重設定案例中,將會是組態。
Agent.JobStatus 組建的狀態。
  • Canceled
  • Failed
  • Succeeded
  • SucceededWithIssues (部分成功)
  • Skipped (上一份工作)
環境變數應參考為 AGENT_JOBSTATUS。 較舊的 agent.jobstatus 版本可供回溯相容性使用。
Agent.MachineName 安裝代理程式的計算機名稱。
Agent.Name 向集區註冊的代理程序名稱。

如果您使用自我裝載代理程式,則此名稱是由您指定。 請參閱 代理程式
Agent.OS 代理程式主機的作業系統。 有效值為:
  • Windows_NT
  • Darwin
  • Linux
如果您在容器中執行,代理程式主機和容器可能會執行不同的作業系統。
Agent.OSArchitecture 代理程式主機的作業系統處理器架構。 有效值為:
  • X86
  • X64
  • ARM
Agent.TempDirectory 在每個管線作業之後清除的暫存資料夾。 .NET Core CLI 工作等工作會使用此目錄來保存暫存專案,例如測試結果發佈之前。

例如: /home/vsts/work/_temp 適用於Ubuntu。
Agent.ToolsDirectory 節點工具安裝程式和使用 Python 版本等工作所使用的目錄,可在工具的多個版本之間切換。

這些工作會將工具從這個目錄新增至 , PATH 讓後續的建置步驟可以使用它們。

瞭解如何 在自我裝載代理程式上管理此目錄。
Agent.WorkFolder 此代理程式的工作目錄。

例如: c:\agent_work

注意:此目錄不保證可由管線工作寫入(例如,對應至容器時)

Agent.ContainerMapping範例:

{
  "one_container": {
    "id": "bdbb357d73a0bd3550a1a5b778b62a4c88ed2051c7802a0659f1ff6e76910190"
  },
  "another_container": {
    "id": "82652975109ec494876a8ccbb875459c945982952e0a72ad74c91216707162bb"
  }
}

建置變數 (DevOps Services)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用
Build.ArtifactStagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildId 已完成組建之記錄的標識碼。 No
Build.BuildNumber 已完成組建的名稱,也稱為執行編號。 您可以指定 此值中包含的內容

此變數的一般用法是讓它成為您在存放庫索引卷標上指定之標籤格式的一部分。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildUri 組建的 URI。 例如: vstfs:///Build/Build/1430

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BinariesDirectory 代理程式上的本機路徑,您可以做為已編譯二進位檔的輸出資料夾。

根據預設,不會設定新的組建管線來清除此目錄。 您可以定義組建,以在 [存放庫] 索引標籤上清除它。

例如: c:\agent_work\1\b

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.ContainerId 成品容器的標識碼。 當您在管線中上傳成品時,它會新增至該特定成品特定的容器。 No
Build.CronSchedule.DisplayName displayName觸發管線執行之cron排程的 。 只有當管線執行是由 YAML 排程觸發程式觸發時,才會設定此變數。 如需詳細資訊,請參閱 schedules.cron 定義 - Build.CronSchedule.DisplayName 變數 Yes
Build.DefinitionName 組建管線的名稱。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.DefinitionVersion 組建管線的版本。 Yes
Build.QueuedBy 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.QueuedById 請參閱「如何設定身分識別變數?」。 Yes
Build.Reason 導致組建執行的事件。
  • Manual:使用者手動將組建排入佇列。
  • IndividualCI由 Git 推送或 TFVC 簽入所觸發的持續整合 (CI )。
  • BatchedCIGit 推送或 TFVC 簽入所觸發的持續整合 (CI),已選取 Batch 變更
  • Schedule排程的 觸發程式。
  • ValidateShelveset:使用者手動將特定 TFVC 擱置集的組建排入佇列。
  • CheckInShelveset閘道簽入 觸發程式。
  • PullRequest:組建是由需要組建的 Git 分支原則所觸發。
  • BuildCompletion:組建是由 另一個組建觸發
  • ResourceTrigger:組建是由 資源觸發程式 所觸發,或是由 另一個組建觸發。
請參閱 建置管線觸發程式使用分支原則改善程式碼品質。
Yes
Build.Repository.Clean 您在來源存放庫設定針對 [清除] 選取的值。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.LocalPath 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑就是程式碼的確切路徑。

如果您取出多個存放庫,行為如下所示(而且可能與 Build.SourcesDirectory 變數的值不同):
  • 如果自我存放庫的簽出步驟未定義自定義簽出路徑,或簽出路徑是自我存放庫的多重簽出預設路徑 $(Pipeline.Workspace)/s/&<RepoName> ,則此變數的值會還原為其預設值,也就是 $(Pipeline.Workspace)/s
  • 如果自我(主要)存放庫的簽出步驟已定義自定義簽出路徑(且不是其多重簽出預設路徑),則此變數包含自我存放庫的確切路徑。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.ID 存放庫的唯一標識碼。

即使存放庫的名稱確實如此,這也不會變更。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Name 觸發存放 的名稱。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Provider 觸發存放 的類型。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Tfvc.Workspace 如果您的存放庫已 Team Foundation 版本控制,則定義。 組建代理程式所使用的 TFVC 工作區名稱

例如,如果 Agent.BuildDirectory 是 c:\agent_work\12 ,且 Agent.Id 為 8,則工作區名稱可能是: ws_12_8

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Uri 觸發存放庫的URL。 例如:
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.RequestedFor 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.RequestedForEmail 請參閱「如何設定身分識別變數?」。 Yes
Build.RequestedForId 請參閱「如何設定身分識別變數?」。 Yes
Build.SourceBranch 建置已排入佇列之觸發存放庫的分支。 一些範例:
  • Git 存放庫分支: refs/heads/main
  • Git 存放庫提取要求: refs/pull/1/merge
  • TFVC 存放庫分支: $/teamproject/main
  • TFVC 存放庫閘道存回: Gated_2016-06-06_05.20.51.4369;username@live.com
  • TFVC 存放庫擱置集組建: myshelveset;username@live.com
  • 當管線由標記觸發時: refs/tags/your-tag-name
當您以組建編號格式使用此變數時,正斜線字元 (/) 會取代為底線字元 _

注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourceBranchName 觸發存放庫中的分支名稱,組建已排入佇列。
  • Git 存放庫分支、提取要求或標籤:ref 中的最後一個路徑區段。例如,在此值中 refs/heads/mainmain。 在這裡值中 refs/heads/feature/toolstools。 在這裡值中 refs/tags/your-tag-nameyour-tag-name
  • TFVC 存放庫分支:工作區根伺服器路徑中的最後一個路徑區段。 例如,在此值中 $/teamproject/mainmain
  • TFVC 存放庫閘道存回或擱置集組建是擱置集的名稱。 例如,Gated_2016-06-06_05.20.51.4369;username@live.commyshelveset;username@live.com
注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourcesDirectory 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑就是程式碼的確切路徑。 如果您取出多個存放庫,則會還原為其預設值,也就是 $(Pipeline.Workspace)/s即使將自我(主要)存放庫簽出到與其多重簽出預設路徑不同的自定義路徑 $(Pipeline.Workspace)/s/<RepoName> (在這方面,變數與 Build.Repository.LocalPath 變數的行為不同)。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceVersion 此組建中包含的觸發存放庫最新版本控制變更。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
Build.SourceVersionMessage 觸發存放庫之認可或變更集的批注。 我們會將訊息截斷為第一行或 200 個字元,只要較短。

Build.SourceVersionMessage 對應至認可時 Build.SourceVersion 訊息。 Build.SourceVersion PR 組建的認可是合併認可(不是來源分支上的認可)。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

此外,這個變數只能在步驟層級上使用,而且無法在作業或階段層級中使用(也就是說,在作業啟動和取出程序代碼之前,不會擷取訊息)。

注意:TFS 2015.4 提供此變數。

注意:在啟用建置時 Batch 變更時,Build.SourceVersionMessage 變數不適用於 Bitbucket 存放庫中的傳統組建管線。
No
Build.StagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Git.SubmoduleCheckout 您已針對 [存放庫] 索引標籤上的 [簽出] 子模組選取的值。取出多個存放庫后,此值會追蹤觸發存放庫的設定。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceTfvcShelveset 定義您的存放庫是否 Team Foundation 版本控制。

如果您正在執行 網關組建擱置集組建,這會設定為您要建置的 擱置集 名稱。

注意:此變數會產生值,該值對組建編號格式的組建使用無效。
No
Build.TriggeredBy.BuildId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的 BuildID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.DefinitionId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的DefinitionID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.DefinitionName 如果組建是由 另一個組建觸發,則此變數會設定為觸發建置管線的名稱。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.BuildNumber 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的數目。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.ProjectID 如果組建是由 另一個組建觸發,則此變數會設定為包含觸發組建的專案標識碼。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Common.TestResultsDirectory 建立測試結果之代理程式的本機路徑。 例如: c:\agent_work\1\TestResults

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

管線變數 (DevOps Services)

變數 描述
Pipeline.Workspace 特定管線的工作區目錄。 此變數的值與 Agent.BuildDirectory相同。 例如: /home/vsts/work/1

提示

如果您使用傳統發行管線,您可以使用 傳統版本和成品變數 來儲存和存取整個管線中的數據。

部署作業變數 (DevOps Services)

這些變數的範圍會限定於特定的 部署作業 ,而且只會在作業運行時間解析。

變數 描述
Environment.Name 部署作業中以執行部署步驟為目標的環境名稱,並記錄部署歷程記錄。 例如: smarthotel-dev
Environment.Id 部署作業中目標環境標識碼。 例如: 10
Environment.ResourceName 以部署作業為目標的環境內特定資源名稱,以執行部署步驟並記錄部署歷程記錄。 例如,這是 Kubernetes 命名空間, bookings 已新增為環境 smarthotel-dev的資源。
Environment.ResourceId 以部署作業為目標之環境內特定資源的標識碼,以執行部署步驟。 例如: 4
Strategy.Name 部署原則名稱: canaryrunOncerolling
Strategy.CycleName 部署中的目前循環名稱。 選項為 PreIterationIterationPostIteration

系統變數 (DevOps Services)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用
System.AccessToken 使用 OAuth 令牌來存取 REST API

從 YAML 腳本使用 System.AccessToken。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.CollectionId TFS 集合或 Azure DevOps 組織的 GUID。 Yes
System.CollectionUri TFS 集合或 Azure DevOps 組織的 URI。 例如: https://dev.azure.com/fabrikamfiber/ Yes
System.DefaultWorkingDirectory 下載原始碼檔案之代理程式的本機路徑。 例如:c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Yes
System.DefinitionId 組建管線的標識碼。 Yes
System.HostType build如果管線是組建,則設定為 。 針對發行,這些值適用於 deployment 部署群組作業、 gates 在評估網關期間,以及其他 release (Agent 和 Agentless) 作業。 Yes
System.JobAttempt 第一次嘗試此作業時設定為1,並在每次重試作業時遞增。 No
System.JobDisplayName 提供給作業的人類可讀取名稱。 No
System.JobId 單一作業嘗試的唯一標識碼。 值對目前的管線而言是唯一的。 No
System.JobName 作業的名稱,通常用於表示相依性及存取輸出變數。 No
System.OidcRequestUri idToken使用 OpenID Connect 產生以 Entra ID 進行驗證的 (OIDC)。 深入了解 Yes
System.PhaseAttempt 第一次嘗試此階段時設定為1,並在每次重試作業時遞增。

注意:「階段」是一個大部分多餘的概念,代表作業的設計時間(而作業是階段的運行時間版本)。 我們大多已從 Azure Pipelines 中移除「階段」的概念。 矩陣和多重設定作業是唯一與「作業」相異的地方。一個階段可以具現化多個作業,這隻會在其輸入中有所不同。
No
System.PhaseDisplayName 提供給階段的人類可讀取名稱。 No
System.PhaseName 作業的字串型識別碼,通常用於表示相依性及存取輸出變數。 No
System.PlanId 單一管線執行的字串型標識碼。 No
System.PullRequest.IsFork 如果提取要求來自存放庫的分支,此變數會設定為 True

否則,它會設定為 False
Yes
System.PullRequest.PullRequestId 造成此組建之提取要求的標識碼。 例如: 17 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 No
System.PullRequest.PullRequestNumber 造成此組建的提取要求數目。 此變數會針對具有不同提取要求標識碼和提取要求號碼的 GitHub 提取要求填入。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.targetBranchName 提取要求的目標分支名稱。 此變數可用於管線中,根據提取要求的目標分支,有條件地執行工作或步驟。 例如,根據要合併變更的分支,您可能會想要觸發一組不同的測試或程式碼分析工具。 No
System.PullRequest.SourceBranch 正在提取要求中檢閱的分支。 例如: refs/heads/users/raisa/new-feature 適用於 Azure Repos。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.SourceCommitId 正在提取要求中檢閱的認可。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。
System.PullRequest.SourceRepositoryURI 包含提取要求的存放庫 URL。 例如: https://dev.azure.com/ouraccount/_git/OurProject No
System.PullRequest.TargetBranch 作為提取要求目標的分支。 例如: refs/heads/main 當您的存放庫位於 Azure Repos,以及 main 存放庫位於 GitHub 時。 只有當組建因為受到分支原則影響的 Git PR 而執行時,才會初始化此變數。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.StageAttempt 第一次嘗試此階段時設定為1,並在每次重試作業時遞增。 No
System.StageDisplayName 提供給階段的人類可讀取名稱。 No
System.StageName 階段的字串型識別碼,通常用於表示相依性及存取輸出變數。 No
System.TeamFoundationCollectionUri TFS 集合或 Azure DevOps 組織的 URI。 例如: https://dev.azure.com/fabrikamfiber/

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.TeamProject 包含此組建的項目名稱。 Yes
System.TeamProjectId 此組建所屬項目的識別碼。 Yes
System.TimelineId 單一管線執行之執行詳細數據和記錄的字串型標識碼。 No
TF_BUILD True如果文稿正由建置工作執行,則設定為 。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

檢查變數 (DevOps Services)

變數 描述
Checks.StageAttempt 第一次嘗試此階段時設定為1,並在每次重試階段時遞增。

此變數只能在核准或檢查環境內使用。 例如,您可以在叫用 $(Checks.StageAttempt) REST API 檢查中使用

將階段嘗試新增為參數。

代理程式變數 (DevOps Server 2022)

注意

您可以使用代理程式變數作為腳本中的環境變數,以及做為建置工作中的參數。 您無法使用它們來自定義組建編號,或套用版本控制標籤或標籤。

變數 描述
Agent.BuildDirectory 代理程式上的本機路徑,其中會建立指定組建管線的所有資料夾。 此變數的值與 Pipeline.Workspace相同。 例如: /home/vsts/work/1
Agent.ContainerMapping 從 YAML 中的容器資源名稱對應到運行時間的 Docker 識別碼。 范例如下表。
Agent.HomeDirectory 代理程式安裝到的目錄。 這包括代理程序軟體。 例如: c:\agent
Agent.Id 代理程式的識別碼。
Agent.JobName 執行中作業的名稱。 這通常是「作業」或「__default」,但在多重設定案例中,將會是組態。
Agent.JobStatus 組建的狀態。
  • Canceled
  • Failed
  • Succeeded
  • SucceededWithIssues (部分成功)
  • Skipped (上一份工作)
環境變數應參考為 AGENT_JOBSTATUS。 較舊的 agent.jobstatus 版本可供回溯相容性使用。
Agent.MachineName 安裝代理程式的計算機名稱。
Agent.Name 向集區註冊的代理程序名稱。

如果您使用自我裝載代理程式,則此名稱是由您指定。 請參閱 代理程式
Agent.OS 代理程式主機的作業系統。 有效值為:
  • Windows_NT
  • Darwin
  • Linux
如果您正在容器中執行,代理程式主機和容器可能會執行不同的操作系統。
Agent.OSArchitecture 代理程式主機的作業系統處理器架構。 有效值為:
  • X86
  • X64
  • ARM
Agent.TempDirectory 在每個管線作業之後清除的暫存資料夾。 .NET Core CLI 工作等工作會使用此目錄來保存暫存專案,例如測試結果發佈之前。

例如: /home/vsts/work/_temp 適用於Ubuntu。
Agent.ToolsDirectory 節點工具安裝程式和使用 Python 版本等工作所使用的目錄,可在工具的多個版本之間切換。

這些工作會將工具從這個目錄新增至 , PATH 讓後續的建置步驟可以使用它們。

瞭解如何 在自我裝載代理程式上管理此目錄。
Agent.WorkFolder 此代理程式的工作目錄。 例如: c:\agent_work

注意:此目錄不保證可由管線工作寫入(例如,對應至容器時)。

Agent.ContainerMapping範例:

{
  "one_container": {
    "id": "bdbb357d73a0bd3550a1a5b778b62a4c88ed2051c7802a0659f1ff6e76910190"
  },
  "another_container": {
    "id": "82652975109ec494876a8ccbb875459c945982952e0a72ad74c91216707162bb"
  }
}

組建變數 (DevOps Server 2022)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用
Build.ArtifactStagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildId 已完成組建之記錄的標識碼。 No
Build.BuildNumber 已完成組建的名稱,也稱為執行編號。 您可以指定 此值中包含的內容

此變數的一般用法是讓它成為您在存放庫索引卷標上指定之標籤格式的一部分。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildUri 組建的 URI。 例如: vstfs:///Build/Build/1430

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BinariesDirectory 代理程式上的本機路徑,您可以做為已編譯二進位檔的輸出資料夾。

根據預設,不會設定新的組建管線來清除此目錄。 您可以定義組建,以在 [存放庫] 索引標籤上清除它。

例如: c:\agent_work\1\b

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.ContainerId 成品容器的標識碼。 當您在管線中上傳成品時,它會新增至該特定成品特定的容器。 No
Build.CronSchedule.DisplayName displayName觸發管線執行之cron排程的 。 只有當管線執行是由 YAML 排程觸發程式觸發時,才會設定此變數。 如需詳細資訊,請參閱 schedules.cron 定義 - Build.CronSchedule.DisplayName 變數。 此變數可在 Azure DevOps Server 2022.1 和更新版本中取得。 Yes
Build.DefinitionName 組建管線的名稱。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.DefinitionVersion 組建管線的版本。 Yes
Build.QueuedBy 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.QueuedById 請參閱「如何設定身分識別變數?」。 Yes
Build.Reason 導致組建執行的事件。
  • Manual:使用者手動將組建排入佇列。
  • IndividualCI由 Git 推送或 TFVC 簽入所觸發的持續整合 (CI )。
  • BatchedCIGit 推送或 TFVC 簽入所觸發的持續整合 (CI),已選取 Batch 變更
  • Schedule排程的 觸發程式。
  • ValidateShelveset:使用者手動將特定 TFVC 擱置集的組建排入佇列。
  • CheckInShelveset閘道簽入 觸發程式。
  • PullRequest:組建是由需要組建的 Git 分支原則所觸發。
  • BuildCompletion:組建是由 另一個組建觸發
  • ResourceTrigger:組建是由 資源觸發程式 所觸發,或是由 另一個組建觸發。
請參閱 建置管線觸發程式使用分支原則改善程式碼品質。
Yes
Build.Repository.Clean 您在來源存放庫設定針對 [清除] 選取的值。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.LocalPath 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑就是程式碼的確切路徑。 如果您取出多個存放庫,行為如下所示(而且可能與 Build.SourcesDirectory 變數的值不同):
  • 如果自我存放庫的簽出步驟未定義自定義簽出路徑,或簽出路徑是自我存放庫的多重簽出預設路徑 $(Pipeline.Workspace)/s/<RepoName> ,則此變數的值會還原為其預設值,也就是 $(Pipeline.Workspace)/s
  • 如果自我(主要)存放庫的簽出步驟已定義自定義簽出路徑(且不是其多重簽出預設路徑),則此變數包含自我存放庫的確切路徑。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.ID 存放庫的唯一標識碼。

即使存放庫的名稱確實如此,這也不會變更。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Name 觸發存放 的名稱。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Provider 觸發存放 的類型。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Tfvc.Workspace 如果您的存放庫已 Team Foundation 版本控制,則定義。 組建代理程式所使用的 TFVC 工作區名稱

例如,如果 Agent.BuildDirectory 是 c:\agent_work\12 ,且 Agent.Id 為 8,則工作區名稱可能是: ws_12_8

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Uri 觸發存放庫的URL。 例如:此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。 No
Build.RequestedFor 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.RequestedForEmail 請參閱「如何設定身分識別變數?」。 Yes
Build.RequestedForId 請參閱「如何設定身分識別變數?」。 Yes
Build.SourceBranch 建置已排入佇列之觸發存放庫的分支。 一些範例:
  • Git 存放庫分支: refs/heads/main
  • Git 存放庫提取要求: refs/pull/1/merge
  • TFVC 存放庫分支: $/teamproject/main
  • TFVC 存放庫閘道存回: Gated_2016-06-06_05.20.51.4369;username@live.com
  • TFVC 存放庫擱置集組建: myshelveset;username@live.com
  • 當管線由標記觸發時: refs/tags/your-tag-name
當您以組建編號格式使用此變數時,正斜線字元 (/) 會取代為底線字元 _

注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourceBranchName 觸發存放庫中的分支名稱,組建已排入佇列。
  • Git 存放庫分支、提取要求或標籤:ref 中的最後一個路徑區段。例如,在此值中 refs/heads/mainmain。 在這裡值中 refs/heads/feature/toolstools。 在這裡值中 refs/tags/your-tag-nameyour-tag-name
  • TFVC 存放庫分支:工作區根伺服器路徑中的最後一個路徑區段。 例如,在此值中 $/teamproject/mainmain
  • TFVC 存放庫閘道存回或擱置集組建是擱置集的名稱。 例如,Gated_2016-06-06_05.20.51.4369;username@live.commyshelveset;username@live.com
注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourcesDirectory 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑就是程式碼的確切路徑。 如果您取出多個存放庫,則會還原為其預設值,也就是 $(Pipeline.Workspace)/s即使將自我(主要)存放庫簽出到與其多重簽出預設路徑不同的自定義路徑 $(Pipeline.Workspace)/s/<RepoName> (在這方面,變數與 Build.Repository.LocalPath 變數的行為不同)。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceVersion 此組建中包含的觸發存放庫最新版本控制變更。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
Build.SourceVersionMessage 觸發存放庫之認可或變更集的批注。 我們會將訊息截斷為第一行或 200 個字元,只要較短。

Build.SourceVersionMessage 對應至認可時 Build.SourceVersion 訊息。 Build.SourceVersion PR 組建的認可是合併認可(不是來源分支上的認可)。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

此外,這個變數只能在步驟層級上使用,而且無法在作業或階段層級中使用(也就是說,在作業啟動和取出程序代碼之前,不會擷取訊息)。

注意:TFS 2015.4 提供此變數。

注意:在啟用建置時 Batch 變更時,Build.SourceVersionMessage 變數不適用於 Bitbucket 存放庫中的傳統組建管線。
No
Build.StagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Git.SubmoduleCheckout 您已針對 [存放庫] 索引標籤上的 [簽出] 子模組選取的值。取出多個存放庫后,此值會追蹤觸發存放庫的設定。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceTfvcShelveset 如果您的存放庫 Team Foundation 版本控制,則定義。

如果您正在執行 網關組建擱置集組建,這會設定為您要建置的 擱置集 名稱。

注意:此變數會產生值,該值對組建編號格式的組建使用無效。
No
Build.TriggeredBy.BuildId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的 BuildID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.DefinitionId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的DefinitionID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.DefinitionName 如果組建是由 另一個組建觸發,則此變數會設定為觸發建置管線的名稱。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.BuildNumber 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的數目。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Build.TriggeredBy.ProjectID 如果組建是由 另一個組建觸發,則此變數會設定為包含觸發組建的專案標識碼。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

如果您使用 觸發 YAML 管線 resources,您應該改用 資源變數
No
Common.TestResultsDirectory 建立測試結果之代理程式的本機路徑。 例如: c:\agent_work\1\TestResults

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

管線變數 (DevOps Server 2022)

變數 描述
Pipeline.Workspace 特定管線的工作區目錄。 此變數的值與 Agent.BuildDirectory相同。 例如: /home/vsts/work/1

提示

如果您使用傳統發行管線,您可以使用 傳統版本和成品變數 來儲存和存取整個管線中的數據。

部署作業變數 (DevOps Server 2022)

這些變數的範圍會限定於特定的 部署作業 ,而且只會在作業運行時間解析。

變數 描述
Environment.Name 部署作業中以執行部署步驟為目標的環境名稱,並記錄部署歷程記錄。 例如: smarthotel-dev
Environment.Id 部署作業中目標環境標識碼。 例如: 10
Environment.ResourceName 以部署作業為目標的環境內特定資源名稱,以執行部署步驟並記錄部署歷程記錄。 例如,這是 Kubernetes 命名空間, bookings 已新增為環境 smarthotel-dev的資源。
Environment.ResourceId 以部署作業為目標之環境內特定資源的標識碼,以執行部署步驟。 例如: 4
Strategy.Name 部署原則名稱: canaryrunOncerolling
Strategy.CycleName 部署中的目前循環名稱。 選項為 PreIterationIterationPostIteration

系統變數 (DevOps Server 2022)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用
System.AccessToken 使用 OAuth 令牌來存取 REST API

從 YAML 腳本使用 System.AccessToken。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.CollectionId TFS 集合或 Azure DevOps 組織的 GUID。 Yes
System.CollectionUri TFS 集合或 Azure DevOps 組織的 URI。 例如: https://dev.azure.com/fabrikamfiber/ Yes
System.DefaultWorkingDirectory 下載原始碼檔案之代理程式的本機路徑。 例如:c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Yes
System.DefinitionId 組建管線的標識碼。 Yes
System.HostType build如果管線是組建,則設定為 。 針對發行,這些值適用於 deployment 部署群組作業、 gates 在評估網關期間,以及其他 release (Agent 和 Agentless) 作業。 Yes
System.JobAttempt 第一次嘗試此作業時設定為1,並在每次重試作業時遞增。 No
System.JobDisplayName 提供給作業的人類可讀取名稱。 No
System.JobId 單一作業嘗試的唯一標識碼。 值對目前的管線而言是唯一的。 No
System.JobName 作業的名稱,通常用於表示相依性及存取輸出變數。 No
System.PhaseAttempt 第一次嘗試此階段時設定為1,並在每次重試作業時遞增。

注意:「階段」是一個大部分多餘的概念,代表作業的設計時間(而作業是階段的運行時間版本)。 我們大多已從 Azure Pipelines 中移除「階段」的概念。 矩陣和多重設定作業是唯一與「作業」相異的地方。一個階段可以具現化多個作業,這隻會在其輸入中有所不同。
No
System.PhaseDisplayName 提供給階段的人類可讀取名稱。 No
System.PhaseName 作業的字串型識別碼,通常用於表示相依性及存取輸出變數。 No
System.PlanId 單一管線執行的字串型標識碼。 No
System.PullRequest.IsFork 如果提取要求來自存放庫的分支,此變數會設定為 True。 否則,它會設定為 False Yes
System.PullRequest.PullRequestId 造成此組建之提取要求的標識碼。 例如: 17 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 No
System.PullRequest.PullRequestNumber 造成此組建的提取要求數目。 此變數會針對具有不同提取要求標識碼和提取要求號碼的 GitHub 提取要求填入。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.targetBranchName 提取要求的目標分支名稱。 此變數可用於管線中,根據提取要求的目標分支,有條件地執行工作或步驟。 例如,根據要合併變更的分支,您可能會想要觸發一組不同的測試或程式碼分析工具。 No
System.PullRequest.SourceBranch 正在提取要求中檢閱的分支。 例如: refs/heads/users/raisa/new-feature 適用於 Azure Repos。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.SourceRepositoryURI 包含提取要求的存放庫 URL。 例如: https://dev.azure.com/ouraccount/_git/OurProject No
System.PullRequest.TargetBranch 作為提取要求目標的分支。 例如: refs/heads/main 當您的存放庫位於 Azure Repos,以及 main 存放庫位於 GitHub 時。 只有當組建因為受到分支原則影響的 Git PR 而執行時,才會初始化此變數。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.StageAttempt 第一次嘗試此階段時設定為1,並在每次重試階段時遞增。 No
System.StageDisplayName 提供給階段的人類可讀取名稱。 No
System.StageName 階段的字串型識別碼,通常用於表示相依性及存取輸出變數。 No
System.TeamFoundationCollectionUri TFS 集合或 Azure DevOps 組織的 URI。 例如: https://dev.azure.com/fabrikamfiber/

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.TeamProject 包含此組建的項目名稱。 Yes
System.TeamProjectId 此組建所屬項目的識別碼。 Yes
System.TimelineId 單一管線執行之執行詳細數據和記錄的字串型標識碼。 No
TF_BUILD True如果文稿正由建置工作執行,則設定為 。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

檢查變數 (DevOps Server 2022)

變數 描述
Checks.StageAttempt 第一次嘗試此階段時設定為1,並在每次重試階段時遞增。
此變數只能在核准或檢查環境內使用。 例如,您可以在叫用 $(Checks.StageAttempt) REST API 檢查中使用
將階段嘗試新增為參數。

代理程式變數 (DevOps Server 2020)

注意

您可以使用代理程式變數作為腳本中的環境變數,以及做為建置工作中的參數。 您無法使用它們來自定義組建編號,或套用版本控制標籤或標籤。

變數 描述
Agent.BuildDirectory 代理程式上的本機路徑,其中會建立指定組建管線的所有資料夾。 此變數的值與 Pipeline.Workspace相同。 例如: /home/vsts/work/1
Agent.HomeDirectory 代理程式安裝到的目錄。 這包括代理程序軟體。 例如: c:\agent
Agent.Id 代理程式的識別碼。
Agent.JobName 執行中作業的名稱。 這通常是「作業」或「__default」,但在多重設定案例中,將會是組態。
Agent.JobStatus 組建的狀態。
  • Canceled
  • Failed
  • Succeeded
  • SucceededWithIssues (部分成功)
  • Skipped (上一份工作)
環境變數應參考為 AGENT_JOBSTATUS。 較舊的 agent.jobstatus 版本可供回溯相容性使用。
Agent.MachineName 安裝代理程式的計算機名稱。
Agent.Name 向集區註冊的代理程序名稱。

如果您使用自我裝載代理程式,則此名稱會由您設定。 請參閱 代理程式
Agent.OS 代理程式主機的作業系統。 有效值為:
  • Windows_NT
  • Darwin
  • Linux
如果您正在容器中執行,代理程式主機和容器可能會執行不同的操作系統。
Agent.OSArchitecture 代理程式主機的作業系統處理器架構。 有效值為:
  • X86
  • X64
  • ARM processor
Agent.TempDirectory 在每個管線作業之後清除的暫存資料夾。 .NET Core CLI 工作等工作會使用此目錄來保存暫存專案,例如測試結果發佈之前。
例如: /home/vsts/work/_temp 適用於Ubuntu。
Agent.ToolsDirectory 節點工具安裝程式和使用 Python 版本等工作所使用的目錄,可在工具的多個版本之間切換。

這些工作會將工具從這個目錄新增至 , PATH 讓後續的建置步驟可以使用它們。

瞭解如何 在自我裝載代理程式上管理此目錄。
Agent.WorkFolder 此代理程式的工作目錄。 例如: c:\agent_work

注意:此目錄不保證可由管線工作寫入(例如,對應至容器時)

組建變數 (DevOps Server 2020)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用?
Build.ArtifactStagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildId 已完成組建之記錄的標識碼。 No
Build.BuildNumber 已完成組建的名稱,也稱為執行編號。 您可以指定 此值中包含的內容

此變數的一般用法是讓它成為您在存放庫索引卷標上指定之標籤格式的一部分。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BuildUri 組建的 URI。 例如: vstfs:///Build/Build/1430

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.BinariesDirectory 代理程式上的本機路徑,您可以做為已編譯二進位檔的輸出資料夾。

根據預設,不會設定新的組建管線來清除此目錄。 您可以定義組建,以在 [存放庫] 索引標籤上清除它。

例如: c:\agent_work\1\b

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.ContainerId 成品容器的標識碼。 當您在管線中上傳成品時,它會新增至該特定成品特定的容器。 No
Build.DefinitionName 組建管線的名稱。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 將會失敗。
Yes
Build.DefinitionVersion 組建管線的版本。 Yes
Build.QueuedBy 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.QueuedById 請參閱「如何設定身分識別變數?」。 Yes
Build.Reason 導致組建執行的事件。
  • Manual:使用者手動將組建排入佇列。
  • IndividualCI由 Git 推送或 TFVC 簽入所觸發的持續整合 (CI )。
  • BatchedCIGit 推送或 TFVC 簽入所觸發的持續整合 (CI),已選取 Batch 變更
  • Schedule排程的 觸發程式。
  • ValidateShelveset:使用者手動將特定 TFVC 擱置集的組建排入佇列。
  • CheckInShelveset閘道簽入 觸發程式。
  • PullRequest:組建是由需要組建的 Git 分支原則所觸發。
  • BuildCompletion:組建是由 另一個組建觸發
  • ResourceTrigger:組建是由 資源觸發程式 所觸發,或是由 另一個組建觸發。
請參閱 建置管線觸發程式使用分支原則改善程式碼品質。
Yes
Build.Repository.Clean 您在來源存放庫設定針對 [清除] 選取的值。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.LocalPath 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑將會是程式代碼的確切路徑。

如果您取出多個存放庫,行為如下所示(而且可能與 Build.SourcesDirectory 變數的值不同):
  • 如果自我存放庫的簽出步驟未定義自定義簽出路徑,或簽出路徑是自我存放庫的多簽出預設路徑 $(Pipeline.Workspace)/s/&lt;RepoName&gt; ,則此變數的值會還原為其預設值,也就是 $(Pipeline.Workspace)/s
  • 如果自我(主要)存放庫的簽出步驟已定義自定義簽出路徑(且不是其多重簽出預設路徑),此變數將會包含自我存放庫的確切路徑。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.ID 存放庫的唯一標識碼。

即使存放庫的名稱確實如此,這也不會變更。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Name 觸發存放 的名稱。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Provider 觸發存放 的類型。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Tfvc.Workspace 如果您的存放庫已 Team Foundation 版本控制,則定義。 組建代理程式所使用的 TFVC 工作區名稱

例如,如果 Agent.BuildDirectory 是 c:\agent_work\12 ,且 Agent.Id 為 8,則工作區名稱可能是: ws_12_8

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Uri 觸發存放庫的URL。 例如:
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.RequestedFor 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Yes
Build.RequestedForEmail 請參閱「如何設定身分識別變數?」。 Yes
Build.RequestedForId 請參閱「如何設定身分識別變數?」。 Yes
Build.SourceBranch 建置已排入佇列之觸發存放庫的分支。 一些範例:
  • Git 存放庫分支: refs/heads/main
  • Git 存放庫提取要求: refs/pull/1/merge
  • TFVC 存放庫分支: $/teamproject/main
  • TFVC 存放庫閘道存回: Gated_2016-06-06_05.20.51.4369;username@live.com
  • TFVC 存放庫擱置集組建: myshelveset;username@live.com
  • 當管線由標記觸發時: refs/tags/your-tag-name
當您以組建編號格式使用此變數時,正斜線字元 (/) 會取代為底線字元 _

注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourceBranchName 觸發存放庫中的分支名稱,組建已排入佇列。
  • Git 存放庫分支、提取要求或標籤:ref 中的最後一個路徑區段。例如,在此值中 refs/heads/mainmain。 在這裡值中 refs/heads/feature/toolstools。 在這裡值中 refs/tags/your-tag-nameyour-tag-name
  • TFVC 存放庫分支:工作區根伺服器路徑中的最後一個路徑區段。 例如,在此值中 $/teamproject/mainmain
  • TFVC 存放庫閘道存回或擱置集組建是擱置集的名稱。 例如,Gated_2016-06-06_05.20.51.4369;username@live.commyshelveset;username@live.com
注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Yes
Build.SourcesDirectory 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。

重要注意事項:如果您只簽出一個 Git 存放庫,此路徑就是程式碼的確切路徑。 如果您取出多個存放庫,則會還原為其預設值,也就是 $(Pipeline.Workspace)/s即使將自我(主要)存放庫簽出到與其多重簽出預設路徑不同的自定義路徑 $(Pipeline.Workspace)/s/<RepoName> (在這方面,變數與 Build.Repository.LocalPath 變數的行為不同)。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceVersion 此組建中包含的觸發存放庫最新版本控制變更。
此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
Build.SourceVersionMessage 觸發存放庫之認可或變更集的批注。 我們會將訊息截斷為第一行或 200 個字元,只要較短。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。

此外,此變數只能在步驟層級上使用,而且無法在作業或階段層級中使用(也就是說,在作業啟動並取出程序代碼之前,不會擷取訊息)。

注意:TFS 2015.4 提供此變數。

注意:在啟用建置時 Batch 變更時,Build.SourceVersionMessage 變數不適用於 Bitbucket 存放庫中的傳統組建管線。
No
Build.StagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.Repository.Git.SubmoduleCheckout 您已針對 [存放庫] 索引標籤上的 [簽出] 子模組選取的值。取出多個存放庫后,此值會追蹤觸發存放庫的設定。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.SourceTfvcShelveset 如果您的存放庫已 Team Foundation 版本控制,則定義。

如果您正在執行 網關組建擱置集組建,這會設定為您要建置的 擱置集 名稱。

注意:此變數會產生值,該值對組建編號格式的組建使用無效。
No
Build.TriggeredBy.BuildId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的 BuildID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.TriggeredBy.DefinitionId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的DefinitionID。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.TriggeredBy.DefinitionName 如果組建是由 另一個組建觸發,則此變數會設定為觸發建置管線的名稱。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.TriggeredBy.BuildNumber 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的數目。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Build.TriggeredBy.ProjectID 如果組建是由 另一個組建觸發,則此變數會設定為包含觸發組建的專案標識碼。 在傳統管線中,此變數是由組建完成觸發程式觸發。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No
Common.TestResultsDirectory 建立測試結果之代理程式的本機路徑。 例如: c:\agent_work\1\TestResults

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

管線變數 (DevOps Server 2020)

變數 描述
Pipeline.Workspace 特定管線的工作區目錄。 此變數的值與 Agent.BuildDirectory相同。 例如: /home/vsts/work/1

部署作業變數 (DevOps Server 2020)

這些變數的範圍會限定於特定的 部署作業 ,而且只會在作業運行時間解析。

變數 描述
Environment.Name 部署作業中以執行部署步驟為目標的環境名稱,並記錄部署歷程記錄。 例如: smarthotel-dev
Environment.Id 部署作業中目標環境標識碼。 例如: 10
Environment.ResourceName 以部署作業為目標的環境內特定資源名稱,以執行部署步驟並記錄部署歷程記錄。 例如,這是 Kubernetes 命名空間, bookings 已新增為環境 smarthotel-dev的資源。
Environment.ResourceId 以部署作業為目標之環境內特定資源的標識碼,以執行部署步驟。 例如: 4

系統變數 (DevOps Server 2020)

當您在範本中未標示為可用的範本中使用變數時,變數將不會轉譯。 變數不會轉譯,因為它的值無法在範本的範圍內存取。

變數 描述 可在範本中使用?
System.AccessToken 使用 OAuth 令牌來存取 REST API

從 YAML 腳本使用 System.AccessToken。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.CollectionId TFS 集合或 Azure DevOps 組織的 GUID Yes
System.CollectionUri 字串 Team Foundation Server 集合 URI。 Yes
System.DefaultWorkingDirectory 下載原始碼檔案之代理程式的本機路徑。 例如:c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
No
System.DefinitionId 組建管線的標識碼。 Yes
System.HostType build如果管線是組建,則設定為 。 針對發行,這些值適用於 deployment 部署群組作業、 gates 在評估網關期間,以及其他 release (Agent 和 Agentless) 作業。 Yes
System.JobAttempt 第一次嘗試此作業時設定為1,並在每次重試作業時遞增。 No
System.JobDisplayName 提供給作業的人類可讀取名稱。 No
System.JobId 單一作業嘗試的唯一標識碼。 值對目前的管線而言是唯一的。 No
System.JobName 作業的名稱,通常用於表示相依性及存取輸出變數。 No
System.PhaseAttempt 第一次嘗試此階段時設定為1,並在每次重試作業時遞增。

注意:「階段」是一個大部分多餘的概念,代表作業的設計時間(而作業是階段的運行時間版本)。 我們大多已從 Azure Pipelines 中移除「階段」的概念。 矩陣和多重設定作業是唯一與「job」 相異的地方。 一個階段可以具現化多個作業,這隻會在其輸入中有所不同。
No
System.PhaseDisplayName 提供給階段的人類可讀取名稱。 No
System.PhaseName 作業的字串型識別碼,通常用於表示相依性及存取輸出變數。 No
System.StageAttempt 第一次嘗試此階段時設定為1,並在每次重試作業時遞增。 No
System.StageDisplayName 提供給階段的人類可讀取名稱。 No
System.StageName 階段的字串型識別碼,通常用於表示相依性及存取輸出變數。 Yes
System.PullRequest.IsFork 如果提取要求來自存放庫的分支,此變數會設定為 True。 否則,它會設定為 False Yes
System.PullRequest.PullRequestId 造成此組建之提取要求的標識碼。 例如: 17 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 No
System.PullRequest.PullRequestNumber 造成此組建的提取要求數目。 此變數會填入來自 GitHub 的提取要求,其中包含不同的提取要求標識碼和提取要求號碼。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.targetBranchName 提取要求的目標分支名稱。 此變數可用於管線中,根據提取要求的目標分支,有條件地執行工作或步驟。 例如,根據要合併變更的分支,您可能會想要觸發一組不同的測試或程式碼分析工具。 No
System.PullRequest.SourceBranch 正在提取要求中檢閱的分支。 例如: refs/heads/users/raisa/new-feature 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.PullRequest.SourceCommitId 正在提取要求中檢閱的認可。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。
System.PullRequest.SourceRepositoryURI 包含提取要求的存放庫 URL。 例如: https://dev.azure.com/ouraccount/_git/OurProject No
System.PullRequest.TargetBranch 作為提取要求目標的分支。 例如: refs/heads/main 當您的存放庫位於 Azure Repos,以及 main 存放庫位於 GitHub 時。 只有當組建因為受到分支原則影響的 Git PR 而執行時,才會初始化此變數。 只有在 PR 受到分支原則影響時,YAML 管線才能使用此變數。 No
System.TeamFoundationCollectionUri Team Foundation 集合的 URI。 例如: https://dev.azure.com/fabrikamfiber/

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
Yes
System.TeamProject 包含此組建的項目名稱。 Yes
System.TeamProjectId 此組建所屬項目的識別碼。 Yes
TF_BUILD True如果文稿正由建置工作執行,則設定為 。

此變數是代理程式範圍,而且可作為腳本中的環境變數和建置工作中的參數,但不能做為組建編號或版本控制標記的一部分。
No

代理程式變數 (DevOps Server 2019)

注意

您可以使用代理程式變數作為腳本中的環境變數,以及做為建置工作中的參數。 您無法使用它們來自定義組建編號,或套用版本控制標籤或標籤。

變數 描述
Agent.BuildDirectory 代理程式上的本機路徑,其中會建立指定組建管線的所有資料夾。 例如: c:\agent_work\1
Agent.HomeDirectory 代理程式安裝到的目錄。 這包括代理程序軟體。 例如: c:\agent
Agent.Id 代理程式的識別碼。
Agent.JobName 執行中作業的名稱。 這通常是「作業」或「__default」,但在多重設定案例中,將會是組態。
Agent.JobStatus 組建的狀態。
  • Canceled
  • Failed
  • Succeeded
  • SucceededWithIssues (部分成功)
  • Skipped (上一份工作)
環境變數應參考為 AGENT_JOBSTATUS。 較舊的 agent.jobstatus 版本可供回溯相容性使用。
Agent.MachineName 安裝代理程式的計算機名稱。
Agent.Name 向集區註冊的代理程序名稱。

如果您使用自我裝載的代理程式,則此名稱會由您設定。 請參閱 代理程式
Agent.OS 代理程式主機的作業系統。 有效值為:
  • Windows_NT
  • Darwin
  • Linux
如果您在容器中執行,代理程式主機和容器可能會執行不同的作業系統。
Agent.OSArchitecture 代理程式主機的作業系統處理器架構。 有效值為:
  • X86
  • X64
  • ARM processor
Agent.TempDirectory 在每個管線作業之後清除的暫存資料夾。 .NET Core CLI 工作等工作會使用此目錄來保存暫存專案,例如測試結果發佈之前。
Agent.ToolsDirectory 節點工具安裝程式和使用 Python 版本等工作所使用的目錄,可在工具的多個版本之間切換。

這些工作會將工具從這個目錄新增至 , PATH 讓後續的建置步驟可以使用它們。

瞭解如何 在自我裝載代理程式上管理此目錄。
Agent.WorkFolder 此代理程式的工作目錄。 例如: c:\agent_work

此目錄不保證可由管線工作寫入(例如,對應至容器時)。

組建變數 (DevOps Server 2019)

變數 描述
Build.ArtifactStagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.BuildId 已完成組建之記錄的標識碼。
Build.BuildNumber 已完成組建的名稱。 您可以在管線選項中指定產生此值的組建編號格式。

此變數的一般用法是讓它成為您在存放庫索引卷標上指定之標籤格式的一部分。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.BuildUri 組建的 URI。 例如: vstfs:///Build/Build/1430

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.BinariesDirectory 代理程式上的本機路徑,您可以做為已編譯二進位檔的輸出資料夾。

根據預設,不會設定新的組建管線來清除此目錄。 您可以定義組建,以在 [存放庫] 索引標籤上清除它。

例如: c:\agent_work\1\b

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.DefinitionName 組建管線的名稱。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 將會失敗。
Build.DefinitionVersion 組建管線的版本。
Build.QueuedBy 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Build.QueuedById 請參閱「如何設定身分識別變數?」。
Build.Reason 導致組建執行的事件。
  • Manual:使用者手動將組建排入佇列。
  • IndividualCI由 Git 推送或 TFVC 簽入所觸發的持續整合 (CI )。
  • BatchedCIGit 推送或 TFVC 簽入所觸發的持續整合 (CI),已選取 Batch 變更
  • Schedule排程的 觸發程式。
  • ValidateShelveset:使用者手動將特定 TFVC 擱置集的組建排入佇列。
  • CheckInShelveset閘道簽入 觸發程式。
  • PullRequest:組建是由需要組建的 Git 分支原則所觸發。
  • BuildCompletion:組建是由 另一個組建觸發。
請參閱 建置管線觸發程式使用分支原則改善程式碼品質。
Build.Repository.Clean 您在來源存放庫設定針對 [清除] 選取的值。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.Repository.LocalPath 下載原始碼檔案之代理程式的本機路徑。 例如:c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。

此變數與 Build.SourcesDirectory 同義。
Build.Repository.Name 存放庫的名稱

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.Repository.Provider 您選取存放庫類型。
此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.Repository.Tfvc.Workspace 如果您的存放庫 Team Foundation 版本控制,則定義。 組建代理程式所使用的 TFVC 工作區名稱

例如,如果 Agent.BuildDirectory 是 c:\agent_work\12 ,且 Agent.Id 為 8,則工作區名稱可能是: ws_12_8

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.Repository.Uri 存放庫的 URL。 例如:
此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.RequestedFor 請參閱「如何設定身分識別變數?」。

注意:此值可以包含空格符或其他無效的標籤字元。 在這些情況下,標籤 格式 會失敗。
Build.RequestedForEmail 請參閱「如何設定身分識別變數?」。
Build.RequestedForId 請參閱「如何設定身分識別變數?」。
Build.SourceBranch 組建已排入佇列的分支。 一些範例:
  • Git 存放庫分支: refs/heads/main
  • Git 存放庫提取要求: refs/pull/1/merge
  • TFVC 存放庫分支: $/teamproject/main
  • TFVC 存放庫閘道存回: Gated_2016-06-06_05.20.51.4369;username@live.com
  • TFVC 存放庫擱置集組建: myshelveset;username@live.com
當您以組建編號格式使用此變數時,正斜線字元 (/) 會取代為底線字元 (_)。

注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Build.SourceBranchName 組建已排入佇列的分支名稱。
  • Git 存放庫分支、提取要求或標籤:ref 中的最後一個路徑區段。例如,在此值中 refs/heads/mainmain。 在這裡值中 refs/heads/feature/toolstools。 在這裡值中 refs/tags/your-tag-nameyour-tag-name
  • TFVC 存放庫分支:工作區根伺服器路徑中的最後一個路徑區段。 例如, $/teamproject/main 這個值是 main
  • TFVC 存放庫閘道存回或擱置集組建是擱置集的名稱。 例如,Gated_2016-06-06_05.20.51.4369;username@live.commyshelveset;username@live.com
注意:在 TFVC 中,如果您正在執行封閉式簽入組建或手動建置擱置集,則無法在組建編號格式中使用此變數。
Build.SourcesDirectory 下載原始碼檔案之代理程式的本機路徑。 例如: c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。

此變數與 Build.Repository.LocalPath 同義。
Build.SourceVersion 此組建中包含的最新版本控制項變更。
此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.SourceVersionMessage 認可或變更集的批注。 我們會將訊息截斷為第一行或 200 個字元,只要較短。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。

注意:TFS 2015.4 提供此變數。

注意:在啟用建置時 Batch 變更時,Build.SourceVersionMessage 變數不適用於 Bitbucket 存放庫中的傳統組建管線。
Build.StagingDirectory 將任何成品複製到其目的地之前,代理程式上的本機路徑。 例如: c:\agent_work\1\a

使用此資料夾的一般方式是使用複製檔案發佈組建成品工作來發佈組建成品。

注意:Build.ArtifactStagingDirectory 和 Build.StagingDirectory 可交換。 此目錄會在每個新組建之前清除,因此您不需要自行清除目錄。

請參閱 Azure Pipelines 中的成品。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.Repository.Git.SubmoduleCheckout 您已針對 [存放庫] 索引標籤上的 [簽出] 子模組選取的值。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.SourceTfvcShelveset 如果您的存放庫 Team Foundation 版本控制,則定義。

如果您正在執行 網關組建擱置集組建,這會設定為您要建置的 擱置集 名稱。

注意:此變數會產生值,該值對組建編號格式的組建使用無效。
Build.TriggeredBy.BuildId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的 BuildID。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.TriggeredBy.DefinitionId 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的DefinitionID。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.TriggeredBy.DefinitionName 如果組建是由 另一個組建觸發,則此變數會設定為觸發建置管線的名稱。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.TriggeredBy.BuildNumber 如果組建是由 另一個組建觸發,則此變數會設定為觸發組建的數目。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Build.TriggeredBy.ProjectID 如果組建是由 另一個組建觸發,則此變數會設定為包含觸發組建的專案標識碼。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
Common.TestResultsDirectory 建立測試結果之代理程式的本機路徑。 例如: c:\agent_work\1\TestResults

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。

系統變數 (DevOps Server 2019)

範例 PowerShell 腳本:存取 REST API

變數 描述
System.AccessToken 使用 OAuth 令牌來存取 REST API

從 YAML 腳本使用 System.AccessToken。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
System.CollectionId TFS 集合或 Azure DevOps 組織的 GUID
System.DefaultWorkingDirectory 下載原始碼檔案之代理程式的本機路徑。 例如:c:\agent_work\1\s

根據預設,新的組建管線只會更新已變更的檔案。 您可以修改在 [存放庫] 索引標籤上下載檔案的方式。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
System.DefinitionId 組建管線的標識碼。
System.HostType build如果管線是組建,則設定為 。 針對發行,這些值適用於 deployment 部署群組作業和 release Agent 作業。
System.PullRequest.IsFork 如果提取要求來自存放庫的分支,此變數會設定為 True。 否則,它會設定為 False
System.PullRequest.PullRequestId 造成此組建之提取要求的標識碼。 例如: 17 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。
System.PullRequest.PullRequestNumber 造成此組建的提取要求數目。 此變數會填入 GitHub 的提取要求,其具有不同的提取要求標識碼和提取要求號碼。
System.PullRequest.SourceBranch 正在提取要求中檢閱的分支。 例如: refs/heads/users/raisa/new-feature 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。
System.PullRequest.SourceCommitId 正在提取要求中檢閱的認可。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Git PR。
System.PullRequest.SourceRepositoryURI 包含提取要求的存放庫 URL。 例如: https://dev.azure.com/ouraccount/_git/OurProject 。 (只有當建置因為 而 執行時,才會初始化此變數受分支原則影響的 Azure Repos Git PR。它不會針對 GitHub PR 初始化。
System.PullRequest.TargetBranch 作為提取要求目標的分支。 例如: refs/heads/main 。 只有當組建因為受到分支原則影響的 Git PR 而執行時,才會初始化此變數。
System.TeamFoundationCollectionUri Team Foundation 集合的 URI。 例如: https://dev.azure.com/fabrikamfiber/

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。
System.TeamProject 包含此組建的項目名稱。
System.TeamProjectId 此組建所屬項目的識別碼。
TF_BUILD True如果文稿正由建置工作執行,則設定為 。

此變數為代理程式範圍。 它可以當做腳本中的環境變數和建置工作中的參數使用,但不能做為組建編號的一部分或版本控制標記。

如何設定身分識別變數?

此值取決於造成建置的原因,以及 Azure Repos 存放庫的特定專案。

如果觸發組建... 然後 Build.QueuedBy 和 Build.QueuedById 值會以... 然後 Build.RequestedFor 和 Build.RequestedForId 值會以...
在 Git 中或持續 整合 (CI) 觸發程式 系統身分識別,例如: [DefaultCollection]\Project Collection Service Accounts 推送或簽入變更的人員。
在 Git 或分支 原則組建中。 系統身分識別,例如: [DefaultCollection]\Project Collection Service Accounts 簽入變更的人員。
在 TFVC 中,由 閘道簽入觸發程式 簽入變更的人員。 簽入變更的人員。
依排程觸發程式在 Git 或 TFVC 中 系統身分識別,例如: [DefaultCollection]\Project Collection Service Accounts 系統身分識別,例如: [DefaultCollection]\Project Collection Service Accounts
因為您按兩下 [ 佇列建置] 按鈕