如何获得构建管道的完整路径

How to get full path to build pipeline

在自定义 vsts 构建任务中,我想知道当前构建管道的路径,以便我可以重复使用该路径来自动计算构建放置​​文件夹的路径。

在我创建构建管道的 vsts 构建门户中,它们可以组织到文件夹中。这是我需要在构建任务中使用的文件夹路径。我可以从这里的变量中获取构建管道的名称:https://docs.microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch

但是,文件夹名称没有变量。如何获取文件夹名称?

您必须为构建管道使用代理。代理可能托管在 VSTS 上,也可能位于您的场所。

现在,构建定义中的所有任务都在代理上执行。代理只是一台机器。通常它在构建过程中使用以下文件夹。

  • Build.Repository.LocalPath 或 Build.SourcesDirectory 或 System.DefaultWorkingDirectory = c:\agent_work\s : 本地路径 在下载源代码文件的代理上
  • Build.ArtifactStagingDirectory 或 Build.StagingDirectory = c:\agent_work\a: 代理上任何工件所在的本地路径 在被推送到目的地之前被复制到。

所以回答你的问题:

  1. c:\agent_work\s这里源码下载。
  2. c:\agent_work\a 在这里你可以复制任何东西。构建定义使用此路径在构建结束时生成构建工件。

构建定义所在的文件夹纯粹是构建定义的东西 -- 它与 运行 构建无关,因此它不会作为构建时变量填充。

您可以通过调用 REST API 来检索构建定义: GET https://{accountName}.visualstudio.com/{project}/_apis/build/definitions/{definitionId}?api-version=4.1。帐户 URI 和构建定义 ID 在 运行 构建中可用,您可以轻松地允许您的脚本访问 OAuth 令牌(填充在 SYSTEM_ACCESSTOKEN 环境变量中)以进行身份​​验证。

这将 return 一个 JSON 对象,其中包含一个 path 属性。这是您的构建定义的路径。