从 Build/Release 管道中,我们可以发现它的路径吗?
From within a Build/Release pipeline, can we discover its path?
在 Azure DevOps 中,我们可以将 Build/Release 定义组织到高级文件夹中:
示例:对于驻留在 Framework
文件夹中的每个管道,我想有条件地执行特定任务。预定义的 Build and Release 变量提供了多种方法来发现有关底层文件系统的信息,但对于此内部路径信息似乎没有任何帮助。
在管道 运行 中,是否可以确定它所在的 folder/path?
你可以用 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"
}
},
所以:
- 添加一个简单的 PS 脚本来调用其余部分 API(使用
$(Build. BuildId)
预定义变量)
- 检查
path
属性 的值
- 如果它包含
Framework
文件夹,请设置一个新变量 this command:
Write-Host "##vso[task.setvariable variable=isFramework;]true"
现在,在任务中添加一个custom condition:
and(succeeded(), eq(variables['isFramework'], 'true'))
在 Azure DevOps 中,我们可以将 Build/Release 定义组织到高级文件夹中:
示例:对于驻留在 Framework
文件夹中的每个管道,我想有条件地执行特定任务。预定义的 Build and Release 变量提供了多种方法来发现有关底层文件系统的信息,但对于此内部路径信息似乎没有任何帮助。
在管道 运行 中,是否可以确定它所在的 folder/path?
你可以用 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"
}
},
所以:
- 添加一个简单的 PS 脚本来调用其余部分 API(使用
$(Build. BuildId)
预定义变量) - 检查
path
属性 的值
- 如果它包含
Framework
文件夹,请设置一个新变量 this command:
Write-Host "##vso[task.setvariable variable=isFramework;]true"
现在,在任务中添加一个custom condition:
and(succeeded(), eq(variables['isFramework'], 'true'))