在 Azure DevOps 中,我们可以将构建/发布定义组织到高级文件夹中:
示例:对于驻留在Framework
文件夹中的每个管道,我想有条件地执行某个任务。预定义的Build和Release变量提供了很多方法来发现有关底层文件系统的信息,但对于这个内部路径信息似乎没有任何意义。
在管道运行期间,是否可以确定它所在的文件夹/路径?
您可以使用 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"
}
},
所以:
$(Build. BuildId)
预定义的变量)path
财产的价值Framework
设置一个新变量:Write-Host "##vso[task.setvariable variable=isFramework;]true"
现在,在任务中添加一个自定义条件:
and(succeeded(), eq(variables['isFramework'], 'true'))