【问题标题】:Azure Pipeline build specific pull requestsAzure Pipeline 构建特定的拉取请求
【发布时间】:2023-03-24 14:49:01
【问题描述】:

我有一个拉取请求列表,每个请求都链接到特定的工作项。我只想为某些工作项运行管道。因此,我想以某种方式自动挑选与我想要构建的工作项相关的提交/拉取请求。在工作项上使用标签或类似的东西。在构建中,我只需要更改的文件,所以我正在考虑使用git diff. 是否可以使用 Azure Pipelines?

【问题讨论】:

  • 嗨,最近怎么样?试试闫的回答有什么好消息吗?如果您仍然遇到任何难题,请随时在下面发表评论:-)

标签: azure-devops azure-pipelines


【解决方案1】:

如果我正确理解您的请求,您只需为满足某些要求的拉取请求运行构建管道,例如,链接到带有特定单词标记的工作项。虽然我确信没有开箱即用的解决方案,但我认为Conditions conceptREST API 可以实现。

我会遵循以下步骤:

  • 构建作业中的第一个构建步骤应该是一个脚本,以确定正在构建的这个特定拉取请求是否与目标工作项相关。它可以是一个 PowerShell 构建步骤,它应该:

    • 获取拉取请求 ID - 它以 predefined system variable 的形式提供,称为 System.PullRequest.PullRequestId
    • 创建一个与此拉取请求相关的REST API call to get work item IDs。它将返回 {id, url} 对的集合,其中 id 是相关工作项的 ID
    • 为每个找到的工作项 ID,创建一个 REST API call to get the details of the work item,特别是,您对响应的 System.Tags 属性感兴趣
    • 同样,对于每个工作项,解析 System.Tags 属性值以查明它是否包含必要的标签
    • 如果至少一个相关工作项包含您感兴趣的标签,则set the flag variable 称为ShouldRunTheRestOfThePipelinetrue
  • 使用custom condition 限定作业的进一步步骤。您可以阅读更多关于表达式 here 的语法。特别是Q&A section 描述了如何在后续步骤的条件中使用上一个构建步骤中设置的变量

现在,关于您关于仅记录已更改文件的说明。实际上,拉取请求的本质是将更改的文件与创建它的目标分支进行比较。因此,您无需对 git diff 执行任何额外操作 - 拉取请求已包含您需要的所有内容。

最后,我建议您重新考虑此设置的要求,因为这听起来有点不自然。对于如何不触发管道,还有其他选项。例如,可以根据on the branch/tag name 决定,includeexclude 选项都可用。或者,您可以指定要包含或排除的文件路径,例如,如果仅更改了 docs/*,则永远不会触发管道。支持wildcard syntax,这使得该工具更加灵活。

希望这可以帮助您针对特定场景构建合适的解决方案。

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 1970-01-01
    • 2021-07-07
    • 2021-02-14
    • 2020-06-25
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多