使用预定义变量

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

变量为你提供了一种简便方法,可以将关键数据位导入管道的各个部分。 这是可供使用的预定义变量的列表。 可能有一些其他预定义的变量,但它们大多供内部使用。

这些变量由系统自动设置,并且是只读的。 (例外情况是 Build.Clean 和 System.Debug。)

在 YAML 管道中,可以引用预定义的变量作为环境变量。 例如,变量 Build.ArtifactStagingDirectory 将成为变量 BUILD_ARTIFACTSTAGINGDIRECTORY

对于经典管道,可以在部署任务中使用发布变量来共享常见信息(例如环境名称、资源组等)。

详细了解如何使用变量

提示

可以请求 Copilot 获取变量帮助。 若要了解详细信息,请参阅 让 Copilot 生成变量用法示例

Build.Clean

这是一个已弃用的变量,用于修改生成代理清理源的方式。 若要了解如何清理源,请参阅清理代理上的本地存储库

System.AccessToken

System.AccessToken 是一个特殊变量,它携带了正在运行的生成所使用的安全令牌。

在 YAML 中,必须使用变量将 System.AccessToken 显式映射到管道中。 可以在步骤或任务级别执行此操作。 例如,可以使用 System.AccessToken 通过容器注册表进行身份验证。

steps:
- task: Docker@2
  inputs:
    command: login
    containerRegistry: '<docker connection>'
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

可以使用System.AccessToken配置 的默认范围。

System.Debug

有关调试管道问题的更详细日志,请定义 System.Debug 并将其设置为 true

  1. 编辑管道。

  2. 选择“变量”。

  3. 添加一个名为 System.Debug、值为 true 的新变量。

    将 System.Debug 设置为 true

  4. 保存新变量。

System.Debug 设置为 true 会为所有运行配置详细日志。 还可以使用“启用系统诊断”复选框为单个运行配置详细日志。

此外,还可以将 System.Debug 设置为 true,作为管道或模板中的变量。

variables:
  system.debug: 'true'

System.Debug 设置为 true 时,一个名为 Agent.Diagnostic 的额外变量将设置为 true。 当 Agent.Diagnostic 设置为 true 时,代理会收集更多日志,这些日志可用于排查自托管代理的网络问题。 有关详细信息,请参阅自托管代理的网络诊断

注意

Agent.Diagnostic 变量可用于 Agent v2.200.0 及更高版本。

有关详细信息,请参阅查看日志以诊断管道问题

代理变量 (DevOps Services)

注意

可以将代理变量用作脚本中的环境变量,并在生成任务中用作参数。 不能使用它们来自定义生成号,或者用来应用版本控制标签或标记。

变量 说明
Agent.BuildDirectory 代理上的本地路径,用于创建给定生成管道的所有文件夹。 此变量的值与 Pipeline.Workspace 相同。 例如:/home/vsts/work/1
Agent.ContainerMapping 在运行时从 YAML 中的容器资源名称到其 Docker ID 的映射。

示例如下表所示。
Agent.HomeDirectory 用于安装代理的目录。 其中包含代理软件。 例如:c:\agent
Agent.Id 代理的 ID。
Agent.JobName 正在运行的作业的名称。 这通常是“Job”或“__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 任务等任务使用此目录在发布之前保存临时项(如测试结果)。

例如:对于 Ubuntu,该目录为 /home/vsts/work/_temp
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 中的工件

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildId 已完成的生成的记录 ID。
Build.BuildNumber 已完成的生成的名称,也称为运行编号。 可以指定此值中包含的内容

此变量的典型用途是使其成为在“存储库”选项卡上指定的标签格式的一部分。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildUri 生成的 URI。 例如:vstfs:///Build/Build/1430

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BinariesDirectory 代理上的本地路径,可以用作已编译二进制文件的输出文件夹。

默认情况下,不会设置新的生成管道来清理此目录。 可以在“存储库”选项卡上定义生成以进行清理。

例如:c:\agent_work\1\b

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.ContainerId 工件的容器 ID。 在管道中上传项目时,该项目将添加到特定于该特定项目的容器中。
Build.CronSchedule.DisplayName 触发管道运行的 cron 计划的 displayName。 仅当管道运行由 YAML 计划触发器触发时,才会设置此变量。 有关详细信息,请参阅 schedules.cron 定义 - Build.CronSchedule.DisplayName 变量
Build.DefinitionName 生成管道的名称。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。
Build.DefinitionVersion 生成管道的版本。
Build.QueuedBy 请参阅如何设置标识变量?

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。
Build.QueuedById 请参阅如何设置标识变量?
Build.Reason 导致了生成运行的事件。
  • Manual:用户已手动将生成排入队列。
  • IndividualCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发。
  • BatchedCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发,并且已选择“批处理更改”。
  • Schedule:计划触发器。
  • ValidateShelveset:用户已手动将特定 TFVC 搁置集的生成排入队列。
  • CheckInShelveset:封闭签入触发器。
  • PullRequest:生成已由需要生成的 Git 分支策略触发。
  • BuildCompletion:生成已由另一个生成触发
  • ResourceTrigger:生成已由资源触发器触发,或已由另一个生成触发
请参阅生成管道触发器使用分支策略提高代码质量
Build.Repository.Clean 源存储库设置中为“清理”选择的值。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.LocalPath 下载源代码文件的代理上的本地路径。 例如:c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

重要说明:如果仅签出一个 Git 存储库,则此路径是访问代码的确切路径。

如果签出多个存储库,则行为如下(可能与 Build.SourcesDirectory 变量的值不同):
  • 如果自(主)存储库的签出步骤未定义自定义签出路径,或者签出路径是自存储库的多签出默认路径 $(Pipeline.Workspace)/s/&<RepoName>,则此变量的值将还原为其默认值,即 $(Pipeline.Workspace)/s
  • 如果自(主)存储库的签出步骤已定义自定义签出路径(并且不是其多签出默认路径),则此变量将包含自存储库的确切路径。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.ID 存储库的唯一标识符。

即使存储库的名称发生更改,该值也不会更改。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
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
  • 当管道由标记触发时:refs/tags/your-tag-name
以生成号格式使用此变量时,正斜杠字符 (/) 将替换为下划线字符 (_)。

注意:在 TFVC 中,如果运行封闭签入生成或手动生成搁置集,则不能以生成号格式使用此变量。
Build.SourceBranchName 生成排队等待的触发存储库的分支名称。
  • Git 存储库分支、拉取请求或标记:参考中的最后一个路径段。例如,在 refs/heads/main 中,此值为 main。 在 refs/heads/feature/tools 中,此值为 tools。 在 refs/tags/your-tag-name 中,此值为 your-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

默认情况下,新的生成管道仅更新已更改的文件。

重要说明:如果仅签出一个 Git 存储库,则此路径是访问代码的确切路径。 如果签出多个存储库,则它将还原为其默认值,即 $(Pipeline.Workspace)/s,即使自(主)存储库签出到不同于其多签出默认路径 $(Pipeline.Workspace)/s/<RepoName> 的自定义路径(在这方面,该变量与 Build.Repository.LocalPath 变量的行为不同)。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersion 此版本中包含的触发存储库的最新版本控制更改。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersionMessage 触发存储库的提交或变更集的注释。 我们将消息截断到第一行或 200 个字符,以较短者为准。

Build.SourceVersionMessage 对应于 Build.SourceVersion 提交上的消息。 PR 生成的 Build.SourceVersion 提交是合并提交(而不是源分支上的提交)。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

此外,此变量仅在步骤级别可用,在作业或阶段级别不可用(即在作业启动并签出代码之前,不会提取消息)。

注意:此变量在 TFS 2015.4 中可用。

注意:启用“生成过程中的批处理更改”时,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。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.DefinitionId 如果生成是由另一个生成触发的,则此变量设置为触发生成的 DefinitionID。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.DefinitionName 如果生成是由另一个生成触发的,则此变量设置为触发生成管道的名称。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.BuildNumber 如果生成是由另一个生成触发的,则此变量设置为触发生成的编号。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.ProjectID 如果生成是由另一个生成触发的,则此变量设置为包含触发生成的项目的 ID。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Common.TestResultsDirectory 代理上创建测试结果的本地路径。 例如:c:\agent_work\1\TestResults

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

管道变量 (DevOps Services)

变量 说明
Pipeline.Workspace 特定管道的工作区目录。 此变量的值与 Agent.BuildDirectory 相同。 例如,/home/vsts/work/1

提示

如果使用的是经典发布管道,可以使用经典发布和工件变量来存储和访问整个管道中的数据。

部署作业变量 (DevOps Services)

这些变量的范围限定为特定的部署作业,并且仅在作业执行时进行解析。

变量 说明
Environment.Name 部署作业中用于运行部署步骤并记录部署历史记录的环境的名称。 例如,smarthotel-dev
Environment.Id 部署作业中面向的环境的 ID。 例如,10
Environment.ResourceName 部署作业中面向的环境中用于运行部署步骤并记录部署历史记录的特定资源的名称。 例如,bookings,它是已作为资源添加到环境 smarthotel-dev 的 Kubernetes 命名空间。
Environment.ResourceId 部署作业中面向的环境中用于运行部署步骤的特定资源的 ID。 例如,4
Strategy.Name 部署策略的名称:canaryrunOncerolling
Strategy.CycleName 部署中的当前周期名称。 选项有 PreIterationIterationPostIteration

系统变量 (DevOps Services)

在模板中使用未标记为可用的模板中变量时,该变量将不会呈现。 变量不会呈现,因为其值在模板的范围内不可访问。

变量 说明 是否在模板中可用?
System.AccessToken 使用 OAuth 令牌访问 REST API

从 YAML 脚本使用 System.AccessToken

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.CollectionId TFS 集合或 Azure DevOps 组织的 GUID。
System.CollectionUri TFS 集合或 Azure DevOps 组织的 URI。 例如:https://dev.azure.com/fabrikamfiber/
System.DefaultWorkingDirectory 下载源代码文件的代理上的本地路径。 例如: c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

此变量是代理范围的。 它可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.DefinitionId 生成管道的 ID。
System.HostType 如果管道是生成,则设置为 build。 对于发布,值为 deployment(部署组作业)、gates(在入口评估期间)以及 release(其他代理和无代理作业)。
System.JobAttempt 首次尝试此作业时设置为 1,并在每次重试作业时递增。
System.JobDisplayName 为作业指定的可读名称。
System.JobId 单个作业的单次尝试的唯一标识符。 该值对于当前管道是唯一的。
System.JobName 作业的名称,通常用于表示依赖项和访问输出变量。
System.OidcRequestUri 使用 OpenID Connect (OIDC) 生成一个 idToken 用于使用 Entra ID 进行身份验证。 了解详细信息
System.PhaseAttempt 首次尝试此阶段时设置为 1,并在每次重试作业时递增。

注意:“阶段”是一个没什么实际意义的概念,它表示作业的设计时间(而作业是阶段的运行时版本)。 我们基本上已从 Azure Pipelines 中移除了“阶段”的概念。 矩阵和多配置作业是“阶段”与“作业”唯一的不同之处。一个阶段可以实例化多个作业,而这些作业只在其输入方面有所不同。
System.PhaseDisplayName 为阶段指定的可读名称。
System.PhaseName 作业的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.PlanId 单个管道运行的基于字符串的标识符。
System.PullRequest.IsFork 如果拉取请求来自存储库的分支,则此变量设置为 True

否则,设置为 False
System.PullRequest.PullRequestId 导致此生成的拉取请求的 ID。 例如:17。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.PullRequestNumber 导致此生成的拉取请求的编号。 此变量针对来自 GitHub 的拉取请求进行填充,这些请求具有不同的拉取请求 ID 和拉取请求编号。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.targetBranchName 拉取请求的目标分支的名称。 此变量可以在管道中用于基于拉取请求的目标分支有条件地执行任务或步骤。 例如,你可能需要根据更改合并到的分支触发一组不同的测试或代码分析工具。
System.PullRequest.SourceBranch 正在拉取请求中查看的分支。 例如:对于 Azure Repos,为 refs/heads/users/raisa/new-feature。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。) 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.SourceCommitId 正在拉取请求中查看的提交。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。) 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.SourceRepositoryURI 包含拉取请求的存储库的 URL。 例如:https://dev.azure.com/ouraccount/_git/OurProject
System.PullRequest.TargetBranch 作为拉取请求目标的分支。 例如:当存储库位于 Azure Repos 中时,为 refs/heads/main,当存储库位于 GitHub 中时,为 main。 仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.StageAttempt 首次尝试此阶段时设置为 1,并在每次重试阶段时递增。
System.StageDisplayName 为阶段提供的用户可读名称。
System.StageName 阶段的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.TeamFoundationCollectionUri TFS 集合或 Azure DevOps 组织的 URI。 例如:https://dev.azure.com/fabrikamfiber/

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.TeamProject 包含此生成的项目的名称。
System.TeamProjectId 此生成所属项目的 ID。
System.TimelineId 单个管道运行的执行详细信息和日志的基于字符串的标识符。
TF_BUILD 如果脚本由生成任务运行,则设置为 True

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

检查变量 (DevOps Services)

变量 说明
Checks.StageAttempt 首次尝试此阶段时设置为 1,并在每次重试阶段时递增。

此变量只能在环境的审批或检查中使用。 例如,可以在$(Checks.StageAttempt)中使用

添加阶段尝试作为参数。

代理变量 (DevOps Server 2022)

注意

可以将代理变量用作脚本中的环境变量,并在生成任务中用作参数。 不能使用它们来自定义生成号,或者用来应用版本控制标签或标记。

变量 说明
Agent.BuildDirectory 代理上的本地路径,用于创建给定生成管道的所有文件夹。 此变量的值与 Pipeline.Workspace 相同。 例如:/home/vsts/work/1
Agent.ContainerMapping 在运行时从 YAML 中的容器资源名称到其 Docker ID 的映射。 示例如下表所示。
Agent.HomeDirectory 用于安装代理的目录。 其中包含代理软件。 例如:c:\agent
Agent.Id 代理的 ID。
Agent.JobName 正在运行的作业的名称。 这通常是“Job”或“__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 任务等任务使用此目录在发布之前保存临时项(如测试结果)。

例如:对于 Ubuntu,该目录为 /home/vsts/work/_temp
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 中的工件

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildId 已完成的生成的记录 ID。
Build.BuildNumber 已完成的生成的名称,也称为运行编号。 可以指定此值中包含的内容

此变量的典型用途是使其成为在“存储库”选项卡上指定的标签格式的一部分。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildUri 生成的 URI。 例如:vstfs:///Build/Build/1430

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BinariesDirectory 代理上的本地路径,可以用作已编译二进制文件的输出文件夹。

默认情况下,不会设置新的生成管道来清理此目录。 可以在“存储库”选项卡上定义生成以进行清理。

例如:c:\agent_work\1\b

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.ContainerId 工件的容器 ID。 在管道中上传项目时,该项目将添加到特定于该特定项目的容器中。
Build.CronSchedule.DisplayName 触发管道运行的 cron 计划的 displayName。 仅当管道运行由 YAML 计划触发器触发时,才会设置此变量。 有关详细信息,请参阅 schedules.cron 定义 - Build.CronSchedule.DisplayName 变量。 此变量在 Azure DevOps Server 2022.1 及更高版本中可用。
Build.DefinitionName 生成管道的名称。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。
Build.DefinitionVersion 生成管道的版本。
Build.QueuedBy 请参阅如何设置标识变量?

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。
Build.QueuedById 请参阅如何设置标识变量?
Build.Reason 导致了生成运行的事件。
  • Manual:用户已手动将生成排入队列。
  • IndividualCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发。
  • BatchedCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发,并且已选择“批处理更改”。
  • Schedule:计划触发器。
  • ValidateShelveset:用户已手动将特定 TFVC 搁置集的生成排入队列。
  • CheckInShelveset:封闭签入触发器。
  • PullRequest:生成已由需要生成的 Git 分支策略触发。
  • BuildCompletion:生成已由另一个生成触发
  • ResourceTrigger:生成已由资源触发器触发,或已由另一个生成触发
请参阅生成管道触发器使用分支策略提高代码质量
Build.Repository.Clean 源存储库设置中为“清理”选择的值。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.LocalPath 下载源代码文件的代理上的本地路径。 例如:c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

重要说明:如果仅签出一个 Git 存储库,则此路径是访问代码的确切路径。 如果签出多个存储库,则行为如下(可能与 Build.SourcesDirectory 变量的值不同):
  • 如果自(主)存储库的签出步骤未定义自定义签出路径,或者签出路径是自存储库的多签出默认路径 $(Pipeline.Workspace)/s/<RepoName>,则此变量的值将还原为其默认值,即 $(Pipeline.Workspace)/s
  • 如果自(主)存储库的签出步骤已定义自定义签出路径(并且不是其多签出默认路径),则此变量将包含自存储库的确切路径。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.ID 存储库的唯一标识符。

即使存储库的名称发生更改,该值也不会更改。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
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
  • 当管道由标记触发时:refs/tags/your-tag-name
以生成号格式使用此变量时,正斜杠字符 (/) 将替换为下划线字符 (_)。

注意:在 TFVC 中,如果运行封闭签入生成或手动生成搁置集,则不能以生成号格式使用此变量。
Build.SourceBranchName 生成排队等待的触发存储库的分支名称。
  • Git 存储库分支、拉取请求或标记:参考中的最后一个路径段。例如,在 refs/heads/main 中,此值为 main。 在 refs/heads/feature/tools 中,此值为 tools。 在 refs/tags/your-tag-name 中,此值为 your-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

默认情况下,新的生成管道仅更新已更改的文件。

重要说明:如果仅签出一个 Git 存储库,则此路径是访问代码的确切路径。 如果签出多个存储库,则它将还原为其默认值,即 $(Pipeline.Workspace)/s,即使自(主)存储库签出到不同于其多签出默认路径 $(Pipeline.Workspace)/s/<RepoName> 的自定义路径(在这方面,该变量与 Build.Repository.LocalPath 变量的行为不同)。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersion 此版本中包含的触发存储库的最新版本控制更改。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersionMessage 触发存储库的提交或变更集的注释。 我们将消息截断到第一行或 200 个字符,以较短者为准。

Build.SourceVersionMessage 对应于 Build.SourceVersion 提交上的消息。 PR 生成的 Build.SourceVersion 提交是合并提交(而不是源分支上的提交)。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

此外,此变量仅在步骤级别可用,在作业或阶段级别不可用(即在作业启动并签出代码之前,不会提取消息)。

注意:此变量在 TFS 2015.4 中可用。

注意:启用“生成过程中的批处理更改”时,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。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.DefinitionId 如果生成是由另一个生成触发的,则此变量设置为触发生成的 DefinitionID。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.DefinitionName 如果生成是由另一个生成触发的,则此变量设置为触发生成管道的名称。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.BuildNumber 如果生成是由另一个生成触发的,则此变量设置为触发生成的编号。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Build.TriggeredBy.ProjectID 如果生成是由另一个生成触发的,则此变量设置为包含触发生成的项目的 ID。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

如果使用 resources 触发 YAML 管道,则应改用资源变量
Common.TestResultsDirectory 代理上创建测试结果的本地路径。 例如:c:\agent_work\1\TestResults

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

管道变量 (DevOps Server 2022)

变量 说明
Pipeline.Workspace 特定管道的工作区目录。 此变量的值与 Agent.BuildDirectory 相同。 例如,/home/vsts/work/1

提示

如果使用的是经典发布管道,可以使用经典发布和工件变量来存储和访问整个管道中的数据。

部署作业变量 (DevOps Server 2022)

这些变量的范围限定为特定的部署作业,并且仅在作业执行时进行解析。

变量 说明
Environment.Name 部署作业中用于运行部署步骤并记录部署历史记录的环境的名称。 例如,smarthotel-dev
Environment.Id 部署作业中面向的环境的 ID。 例如,10
Environment.ResourceName 部署作业中面向的环境中用于运行部署步骤并记录部署历史记录的特定资源的名称。 例如,bookings,它是已作为资源添加到环境 smarthotel-dev 的 Kubernetes 命名空间。
Environment.ResourceId 部署作业中面向的环境中用于运行部署步骤的特定资源的 ID。 例如,4
Strategy.Name 部署策略的名称:canaryrunOncerolling
Strategy.CycleName 部署中的当前周期名称。 选项有 PreIterationIterationPostIteration

系统变量 (DevOps Server 2022)

在模板中使用未标记为可用的模板中变量时,该变量将不会呈现。 变量不会呈现,因为其值在模板的范围内不可访问。

变量 说明 是否在模板中可用?
System.AccessToken 使用 OAuth 令牌访问 REST API

从 YAML 脚本使用 System.AccessToken

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.CollectionId TFS 集合或 Azure DevOps 组织的 GUID。
System.CollectionUri TFS 集合或 Azure DevOps 组织的 URI。 例如:https://dev.azure.com/fabrikamfiber/
System.DefaultWorkingDirectory 下载源代码文件的代理上的本地路径。 例如: c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

此变量是代理范围的。 它可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.DefinitionId 生成管道的 ID。
System.HostType 如果管道是生成,则设置为 build。 对于发布,值为 deployment(部署组作业)、gates(在入口评估期间)以及 release(其他代理和无代理作业)。
System.JobAttempt 首次尝试此作业时设置为 1,并在每次重试作业时递增。
System.JobDisplayName 为作业指定的可读名称。
System.JobId 单个作业的单次尝试的唯一标识符。 该值对于当前管道是唯一的。
System.JobName 作业的名称,通常用于表示依赖项和访问输出变量。
System.PhaseAttempt 首次尝试此阶段时设置为 1,并在每次重试作业时递增。

注意:“阶段”是一个没什么实际意义的概念,它表示作业的设计时间(而作业是阶段的运行时版本)。 我们基本上已从 Azure Pipelines 中移除了“阶段”的概念。 矩阵和多配置作业是“阶段”与“作业”唯一的不同之处。一个阶段可以实例化多个作业,而这些作业只在其输入方面有所不同。
System.PhaseDisplayName 为阶段指定的可读名称。
System.PhaseName 作业的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.PlanId 单个管道运行的基于字符串的标识符。
System.PullRequest.IsFork 如果拉取请求来自存储库的分支,则此变量设置为 True。 否则,设置为 False
System.PullRequest.PullRequestId 导致此生成的拉取请求的 ID。 例如:17。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.PullRequestNumber 导致此生成的拉取请求的编号。 此变量针对来自 GitHub 的拉取请求进行填充,这些请求具有不同的拉取请求 ID 和拉取请求编号。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.targetBranchName 拉取请求的目标分支的名称。 此变量可以在管道中用于基于拉取请求的目标分支有条件地执行任务或步骤。 例如,你可能需要根据更改合并到的分支触发一组不同的测试或代码分析工具。
System.PullRequest.SourceBranch 正在拉取请求中查看的分支。 例如:对于 Azure Repos,为 refs/heads/users/raisa/new-feature。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。) 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.SourceRepositoryURI 包含拉取请求的存储库的 URL。 例如:https://dev.azure.com/ouraccount/_git/OurProject
System.PullRequest.TargetBranch 作为拉取请求目标的分支。 例如:当存储库位于 Azure Repos 中时,为 refs/heads/main,当存储库位于 GitHub 中时,为 main。 仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.StageAttempt 首次尝试此阶段时设置为 1,并在每次重试阶段时递增。
System.StageDisplayName 为阶段提供的用户可读名称。
System.StageName 阶段的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.TeamFoundationCollectionUri TFS 集合或 Azure DevOps 组织的 URI。 例如:https://dev.azure.com/fabrikamfiber/

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.TeamProject 包含此生成的项目的名称。
System.TeamProjectId 此生成所属项目的 ID。
System.TimelineId 单个管道运行的执行详细信息和日志的基于字符串的标识符。
TF_BUILD 如果脚本由生成任务运行,则设置为 True

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

检查变量 (DevOps Server 2022)

变量 说明
Checks.StageAttempt 首次尝试此阶段时设置为 1,并在每次重试阶段时递增。
此变量只能在环境的审批或检查中使用。 例如,可以在$(Checks.StageAttempt)中使用
添加阶段尝试作为参数。

代理变量 (DevOps Server 2020)

注意

可以将代理变量用作脚本中的环境变量,并在生成任务中用作参数。 不能使用它们来自定义生成号,或者用来应用版本控制标签或标记。

变量 说明
Agent.BuildDirectory 代理上的本地路径,用于创建给定生成管道的所有文件夹。 此变量的值与 Pipeline.Workspace 相同。 例如:/home/vsts/work/1
Agent.HomeDirectory 用于安装代理的目录。 其中包含代理软件。 例如:c:\agent
Agent.Id 代理的 ID。
Agent.JobName 正在运行的作业的名称。 这通常是“Job”或“__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 任务等任务使用此目录在发布之前保存临时项(如测试结果)。
例如:对于 Ubuntu,该目录为 /home/vsts/work/_temp
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 中的工件

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildId 已完成的生成的记录 ID。
Build.BuildNumber 已完成的生成的名称,也称为运行编号。 可以指定此值中包含的内容

此变量的典型用途是使其成为在“存储库”选项卡上指定的标签格式的一部分。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BuildUri 生成的 URI。 例如:vstfs:///Build/Build/1430

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.BinariesDirectory 代理上的本地路径,可以用作已编译二进制文件的输出文件夹。

默认情况下,不会设置新的生成管道来清理此目录。 可以在“存储库”选项卡上定义生成以进行清理。

例如:c:\agent_work\1\b

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.ContainerId 工件的容器 ID。 在管道中上传项目时,该项目将添加到特定于该特定项目的容器中。
Build.DefinitionName 生成管道的名称。

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式将失败。
Build.DefinitionVersion 生成管道的版本。
Build.QueuedBy 请参阅如何设置标识变量?

注意:此值可以包含空格或其他无效标签字符。 在这些情况下,标签格式会失败。
Build.QueuedById 请参阅如何设置标识变量?
Build.Reason 导致了生成运行的事件。
  • Manual:用户已手动将生成排入队列。
  • IndividualCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发。
  • BatchedCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发,并且已选择“批处理更改”。
  • Schedule:计划触发器。
  • ValidateShelveset:用户已手动将特定 TFVC 搁置集的生成排入队列。
  • CheckInShelveset:封闭签入触发器。
  • PullRequest:生成已由需要生成的 Git 分支策略触发。
  • BuildCompletion:生成已由另一个生成触发
  • ResourceTrigger:生成已由资源触发器触发,或已由另一个生成触发
请参阅生成管道触发器使用分支策略提高代码质量
Build.Repository.Clean 源存储库设置中为“清理”选择的值。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.LocalPath 下载源代码文件的代理上的本地路径。 例如:c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

重要说明:如果仅签出一个 Git 存储库,此路径将是访问代码的确切路径。

如果签出多个存储库,则行为如下(可能与 Build.SourcesDirectory 变量的值不同):
  • 如果自(主)存储库的签出步骤未定义自定义签出路径,或者签出路径是自存储库的多签出默认路径 $(Pipeline.Workspace)/s/&lt;RepoName&gt;,此变量的值将还原为其默认值,即 $(Pipeline.Workspace)/s
  • 如果自(主)存储库的签出步骤已定义自定义签出路径(并且不是其多签出默认路径),此变量将包含自存储库的确切路径。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.Repository.ID 存储库的唯一标识符。

即使存储库的名称发生更改,该值也不会更改。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
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
  • 当管道由标记触发时:refs/tags/your-tag-name
以生成号格式使用此变量时,正斜杠字符 (/) 将替换为下划线字符 (_)。

注意:在 TFVC 中,如果运行封闭签入生成或手动生成搁置集,则不能以生成号格式使用此变量。
Build.SourceBranchName 生成排队等待的触发存储库的分支名称。
  • Git 存储库分支、拉取请求或标记:参考中的最后一个路径段。例如,在 refs/heads/main 中,此值为 main。 在 refs/heads/feature/tools 中,此值为 tools。 在 refs/tags/your-tag-name 中,此值为 your-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

默认情况下,新的生成管道仅更新已更改的文件。

重要说明:如果仅签出一个 Git 存储库,则此路径是访问代码的确切路径。 如果签出多个存储库,则它将还原为其默认值,即 $(Pipeline.Workspace)/s,即使自(主)存储库签出到不同于其多签出默认路径 $(Pipeline.Workspace)/s/<RepoName> 的自定义路径(在这方面,该变量与 Build.Repository.LocalPath 变量的行为不同)。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersion 此版本中包含的触发存储库的最新版本控制更改。
此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Build.SourceVersionMessage 触发存储库的提交或变更集的注释。 我们将消息截断到第一行或 200 个字符,以较短者为准。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

此外,此变量仅在步骤级别可用,在作业或阶段级别不可用(即在作业启动并签出代码之前,不会提取消息)。

注意:此变量在 TFS 2015.4 中可用。

注意:启用“生成过程中的批处理更改”时,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 如果生成是由另一个生成触发的,则此变量设置为包含触发生成的项目的 ID。 在经典管道中,此变量由生成完成触发器触发。

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
Common.TestResultsDirectory 代理上创建测试结果的本地路径。 例如:c:\agent_work\1\TestResults

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

管道变量 (DevOps Server 2020)

变量 说明
Pipeline.Workspace 特定管道的工作区目录。 此变量的值与 Agent.BuildDirectory 相同。 例如,/home/vsts/work/1

部署作业变量 (DevOps Server 2020)

这些变量的范围限定为特定的部署作业,并且仅在作业执行时进行解析。

变量 说明
Environment.Name 部署作业中用于运行部署步骤并记录部署历史记录的环境的名称。 例如,smarthotel-dev
Environment.Id 部署作业中面向的环境的 ID。 例如,10
Environment.ResourceName 部署作业中面向的环境中用于运行部署步骤并记录部署历史记录的特定资源的名称。 例如,bookings,它是已作为资源添加到环境 smarthotel-dev 的 Kubernetes 命名空间。
Environment.ResourceId 部署作业中面向的环境中用于运行部署步骤的特定资源的 ID。 例如,4

系统变量 (DevOps Server 2020)

在模板中使用未标记为可用的模板中变量时,该变量将不会呈现。 变量不会呈现,因为其值在模板的范围内不可访问。

变量 说明 是否在模板中可用?
System.AccessToken 使用 OAuth 令牌访问 REST API

从 YAML 脚本使用 System.AccessToken

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.CollectionId TFS 集合或 Azure DevOps 组织的 GUID
System.CollectionUri 字符串 Team Foundation Server 集合 URI。
System.DefaultWorkingDirectory 下载源代码文件的代理上的本地路径。 例如: c:\agent_work\1\s

默认情况下,新的生成管道仅更新已更改的文件。 可以在“存储库”选项卡上修改文件的下载方式。

此变量是代理范围的。 它可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.DefinitionId 生成管道的 ID。
System.HostType 如果管道是生成,则设置为 build。 对于发布,值为 deployment(部署组作业)、gates(在入口评估期间)以及 release(其他代理和无代理作业)。
System.JobAttempt 首次尝试此作业时设置为 1,并在每次重试作业时递增。
System.JobDisplayName 为作业指定的可读名称。
System.JobId 单个作业的单次尝试的唯一标识符。 该值对于当前管道是唯一的。
System.JobName 作业的名称,通常用于表示依赖项和访问输出变量。
System.PhaseAttempt 首次尝试此阶段时设置为 1,并在每次重试作业时递增。

注意:“阶段”是一个没什么实际意义的概念,它表示作业的设计时间(而作业是阶段的运行时版本)。 我们基本上已从 Azure Pipelines 中移除了“阶段”的概念。 矩阵和多配置作业是“阶段”与“作业”唯一的不同之处。 一个阶段可以实例化多个作业,而这些作业只在其输入方面有所不同。
System.PhaseDisplayName 为阶段指定的可读名称。
System.PhaseName 作业的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.StageAttempt 首次尝试此阶段时设置为 1,并在每次重试作业时递增。
System.StageDisplayName 为阶段提供的用户可读名称。
System.StageName 阶段的基于字符串的标识符,通常用于表示依赖项和访问输出变量。
System.PullRequest.IsFork 如果拉取请求来自存储库的分支,则此变量设置为 True。 否则,设置为 False
System.PullRequest.PullRequestId 导致此生成的拉取请求的 ID。 例如:17。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.PullRequestNumber 导致此生成的拉取请求的编号。 此变量针对来自 GitHub 的拉取请求进行填充,这些请求具有不同的拉取请求 ID 和拉取请求编号。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.targetBranchName 拉取请求的目标分支的名称。 此变量可以在管道中用于基于拉取请求的目标分支有条件地执行任务或步骤。 例如,你可能需要根据更改合并到的分支触发一组不同的测试或代码分析工具。
System.PullRequest.SourceBranch 正在拉取请求中查看的分支。 例如:refs/heads/users/raisa/new-feature。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。) 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.SourceCommitId 正在拉取请求中查看的提交。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。) 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.PullRequest.SourceRepositoryURI 包含拉取请求的存储库的 URL。 例如:https://dev.azure.com/ouraccount/_git/OurProject
System.PullRequest.TargetBranch 作为拉取请求目标的分支。 例如:当存储库位于 Azure Repos 中时,为 refs/heads/main,当存储库位于 GitHub 中时,为 main。 仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。 仅当拉取请求受分支策略影响时,此变量才在 YAML 管道中可用。
System.TeamFoundationCollectionUri Team Foundation 集合的 URI。 例如:https://dev.azure.com/fabrikamfiber/

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.TeamProject 包含此生成的项目的名称。
System.TeamProjectId 此生成所属项目的 ID。
TF_BUILD 如果脚本由生成任务运行,则设置为 True

此变量是代理范围的,可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。

代理变量 (DevOps Server 2019)

注意

可以将代理变量用作脚本中的环境变量,并在生成任务中用作参数。 不能使用它们来自定义生成号,或者用来应用版本控制标签或标记。

变量 说明
Agent.BuildDirectory 代理上的本地路径,用于创建给定生成管道的所有文件夹。 例如:c:\agent_work\1
Agent.HomeDirectory 用于安装代理的目录。 其中包含代理软件。 例如:c:\agent
Agent.Id 代理的 ID。
Agent.JobName 正在运行的作业的名称。 这通常是“Job”或“__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 已完成的生成的记录 ID。
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:持续集成 (CI) 由 Git 推送或 TFVC 签入触发。
  • BatchedCI:持续集成 (CI) 由 Git 推送或 TFVC 签入触发,并且已选择“批处理更改”。
  • 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 存储库分支、拉取请求或标记:参考中的最后一个路径段。例如,在 refs/heads/main 中,此值为 main。 在 refs/heads/feature/tools 中,此值为 tools。 在 refs/tags/your-tag-name 中,此值为 your-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 中可用。

注意:启用“生成过程中的批处理更改”时,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 如果生成是由另一个生成触发的,则此变量设置为包含触发生成的项目的 ID。

此变量是代理范围的。 它可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
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 生成管道的 ID。
System.HostType 如果管道是生成,则设置为 build。 对于发布,值为 deployment(部署组作业)和 release(代理作业)。
System.PullRequest.IsFork 如果拉取请求来自存储库的分支,则此变量设置为 True。 否则,设置为 False
System.PullRequest.PullRequestId 导致此生成的拉取请求的 ID。 例如:17。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.PullRequestNumber 导致此生成的拉取请求的编号。 此变量针对来自 GitHub 的拉取请求进行填充,这些请求具有不同的拉取请求 ID 和拉取请求编号。
System.PullRequest.SourceBranch 正在拉取请求中查看的分支。 例如:refs/heads/users/raisa/new-feature。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.SourceCommitId 正在拉取请求中查看的提交。 (仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。)
System.PullRequest.SourceRepositoryURI 包含拉取请求的存储库的 URL。 例如:https://dev.azure.com/ouraccount/_git/OurProject。 (仅当由于受分支策略影响的 Azure Repos Git 拉取请求而运行生成时,才会初始化此变量。它未针对 GitHub PR 进行初始化。)
System.PullRequest.TargetBranch 作为拉取请求目标的分支。 例如:refs/heads/main。 仅当由于受分支策略影响的 Git 拉取请求而运行生成时,才会初始化此变量。
System.TeamFoundationCollectionUri Team Foundation 集合的 URI。 例如:https://dev.azure.com/fabrikamfiber/

此变量是代理范围的。 它可用作脚本中的环境变量和生成任务中的参数,但不能用作生成号的一部分或版本控制标记。
System.TeamProject 包含此生成的项目的名称。
System.TeamProjectId 此生成所属项目的 ID。
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
由于单击了“队列生成”按钮而触发

请求 Copilot 生成变量用法示例

可以使用 Copilot 生成使用 Agent.JobStatus 变量的示例管道阶段条件。

注意

GitHub Copilot 由 AI 提供支持,因此可能会带来意外和错误。 请确保验证任何生成的代码或建议。 有关 GitHub Copilot、产品影响、人工监督和隐私的常规用途的详细信息,请参阅 GitHub Copilot 常见问题解答

以下文本显示了 Copilot 的示例提示:

如何创建仅在 SucceededSucceededWithIssuesAgent.JobStatus 时才运行的新 Azure DevOps 阶段?

可以自定义提示以使用满足要求的值。 例如,可以请求帮助创建仅当管道失败时运行的阶段。