如何解决如何在 azure devop 管道中设置拉取请求和非拉取请求阶段的条件?
我正在学习使用 azure devop 的 yaml 管道。
在一个阶段,我把这个条件放在
condition: and(succeeded(),eq(variables['System.PullRequest.PullRequestId'],'Null')
variables:
prId: $(System.PullRequest.PullRequestId)
reason: $(Build.Reason)
基本上只有在它不是拉取请求时才运行这个阶段。然而,当我手动触发管道时,azure devop 决定跳过这个。所以我添加了 build reason 和 pullrequestId 作为变量然后输出它。
write-host "------------------------------"
write-host '$(reason)'
write-host "------------------------------"
write-host '$(prId)'
输出为:
Manual
$(System.PullRequest.PullRequestId)
我在想,当它不是由 PullRequest 触发时,$(System.PullRequest.PullRequestId) 应该是 null 或空字符串。看起来情况并非如此。文档说 PullRequestId 只会在它是拉取请求时填充,但我真的不知道它没有填充时的值是什么。至少看起来不是 Null。
那么,除了 PullRequestId 之外,构建原因是 PR 或非 PR 运行之间存在差异的可靠条件吗?
解决方法
那么,除了 PullRequestId 之外,构建原因是 PR 或非 PR 运行之间存在差异的可靠条件吗?
是的。您可以使用以下脚本:
condition: and(succeeded(),ne(variables['Build.Reason'],'PullRequest'))
文档说 PullRequestId 只会在它是拉取请求时被填充,但我真的不知道它不填充时的值是什么。
未填充时该变量不存在。因此,在您的情况下,variables['System.PullRequest.PullRequestId']
的值为 'System.PullRequest.PullRequestId'
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。