我有一个请求列表,每个请求都链接到特定的工作项。我只想为某些工作项运行管道。因此,我想以某种方式自动仅自动选择与要构建的工作项相关的提交/请求。在工作项或类似项目上使用标签。在构建中,我只需要更改的文件,因此我在考虑使用git diff.
使用Azure管道有可能吗?
答案 0 :(得分:1)
如果我正确理解了您的请求,则只需要为那些满足某些要求(例如,链接到带有特定单词的工作项的链接)的拉取请求运行构建管道。尽管我确定对此没有现成的解决方案,但我认为可以使用Conditions concept和REST API来实现。
我将按照以下步骤操作:
构建作业中的第一个构建步骤应该是脚本,以查找正在构建的特定拉取请求是否与目标工作项相关。它可以是PowerShell的构建步骤,应该:
System.PullRequest.PullRequestId
的{{3}}的形式提供{id, url}
对的集合,其中id
是所讨论的工作项的ID System.Tags
属性感兴趣System.Tags
属性值以找出其是否包含必要的标签ShouldRunTheRestOfThePipeline
至true
使用set the flag variable来限制工作的进一步步骤。您可以阅读有关表达式custom condition的语法的更多信息。 here特别说明了如何在后续步骤的条件下使用上一个构建步骤中设置的变量
现在,关于仅获取已更改文件的注释。实际上,拉取请求的性质是将更改后的文件与其创建时所针对的目标分支进行比较。因此,您无需对git diff
进行任何额外操作-提取请求已经包含了您所需要的全部内容。
最后,我建议您重新考虑此设置的要求,因为这对我来说听起来有点不自然。还有其他关于如何不触发管道的选项。例如,可以基于Q&A section来决定,include
和exclude
选项均可用。或者,您可以指定要包括或排除的文件路径,例如,如果仅更改docs/*
,则永远不要触发管道。支持on the branch/tag name,这使该工具更加灵活。
希望这可以帮助您针对特定情况构建合适的解决方案。