0

在 Azure DevOps 中,我们可以将构建/发布定义组织到高级文件夹中:

在此处输入图像描述

示例:对于驻留在Framework文件夹中的每个管道,我想有条件地执行某个任务。预定义的BuildRelease变量提供了很多方法来发现有关底层文件系统的信息,但对于这个内部路径信息似乎没有任何意义。

在管道运行期间,是否可以确定它所在的文件夹/路径?

4

1 回答 1

1

您可以使用 Rest API - Builds - Get检查它:

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=6.0

在回复中,您会获得definition详细信息,包括path

"definition":  {
                   "drafts":  [

                              ],
                   "id":  13,
                   "name":  "TestBuild",
                   "url":  "https://dev.azure.com/xxxxx/7fcdafd5-b891-4fe5-b2fe-xxxxxxx/_apis/build/Definitions/13?revision=1075",
                   "uri":  "vstfs:///Build/Definition/13",
                   "path":  "\\Test Folder",
                   "type":  "build",
                   "queueStatus":  "enabled",
                   "revision":  1075,
                   "project":  {
                                   "id":  "7fcdafd5-b891-4fe5-b2fe-9b9axxxxx",
                                   "name":  "Sample",
                                   "url":  "https://dev.azure.com/xxxx/_apis/projects/7fcdafd5-b891-4fe5-b2fe-9xxxxxx",
                                   "state":  "wellFormed",
                                   "revision":  97,
                                   "visibility":  "private",
                                   "lastUpdateTime":  "2021-03-22T10:25:39.33Z"
                               }
               },

所以:

  • 添加一个调用其余 API 的简单 PS 脚本(使用$(Build. BuildId)预定义的变量)
  • 检查path财产的价值
  • 如果它包含文件夹,则使用以下命令Framework设置一个新变量:
Write-Host "##vso[task.setvariable variable=isFramework;]true"

现在,在任务中添加一个自定义条件

and(succeeded(), eq(variables['isFramework'], 'true'))
于 2021-08-15T06:42:40.180 回答