azure - 如果触发了特定的工件,则表达式验证 azure devops
问题描述
我有多个工件,我会检测在构建后是否触发了这些工件之一并将其部署到其各自的代理
or(succeeded(), eq(variables['Build.SourceBranch'], '$_Multi-Country/SSIS_FileDrop/Dev/DEV'))
解决方案
由于您可以将多个工件源绑定到一个发布定义,因此不存在这样的预定义变量可以实现工件名称。
虽然 artifacts source 对于发布管道来说不是唯一的,但是与 artifacts 相关的build id在发布中是唯一的,并且可以通过一个预定义的变量来获取Build.Buildid
。
所以,这里同意@MarTin 的评论,你可以先使用这个api来实现工件名称。
下面是 powershell 脚本示例:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$env:BUILD_BUILDID/artifacts?api-version=4.1"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get
Write-Host "artifactName:" ($artifactName = $Pipeline.value.name)
Write-Host "##vso[task.setvariable variable=artifactName]$artifactName"
在此脚本中,使用环境SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
并SYSTEM_TEAMPROJECTID
获取当前组织名称和项目名称。此外,支持此 api 的最新版本是4.1
.
您可以在代理作业的第一步中添加此 powershell 任务。然后,您将能够使用artifactName
条件表达式中的变量来验证触发器工件名称是否是特定的。
推荐阅读
- rest - Flask-RESTful 指定特定端点允许的 HTTP 方法
- javascript - TextInput 在 React Native 中的键盘下消失
- javascript - functions.php 中的 Javascript
- mongodb - mongodump 和 mongorestore 之后,mongodb 丢弃的集合不断返回
- javascript - 为什么我的异步函数返回一个空数组?
- javascript - 我是 reactjs 的新手-希望添加一些生效的条件类
- javascript - 为什么使用 Graph 发送消息时会进入垃圾邮件?
- reactjs - 如何为来自返回 JSON 的网站的 REACT 定义数据
- sql - 是否可以使用 micronaut hibernate-gorm 使用 Native SQL 查询?
- google-apps-script - 既然链接没有反映为 HYPERLINK,如何从单元格中提取链接?