【问题标题】:Azure Devops Build Pipeline from PR Trigger get source branch从 PR Trigger 获取源分支的 Azure Devops Build Pipeline
【发布时间】:2020-12-20 13:28:02
【问题描述】:

所以我一直在构建一个构建管道,每当对 master 进行拉取请求时都会触发该管道,因此我们有一个分支策略,以便对 master 分支的唯一更改是通过拉取请求。

我希望构建管道检查 PR 的源分支,并作为构建管道的一部分对源分支进行一些提交。我以为我可以只使用Build.SourceBranchName 变量,但是当触发管道时,SourceBranchName 是主控。所以我无法使用它。

有什么简单的方法吗?

【问题讨论】:

  • 您可以使用System.PullRequest.SourceBranch 变量访问拉取请求中正在审查的分支。仅当 Build.Reason 等于 PullRequest 时,此变量才可用。
  • @LJ。谢谢!那行得通,现在问题变成了由于对 PR 的新提交,它再次运行管道,这不应该发生,因为我在提交消息中有 [skip ci]。你知道解决这个问题的方法吗?
  • 我相信 [skip-ci] 不适用于 PR 构建 - 它仅适用于 IndividualCI 构建。如果[skip ci] 包含在提交消息中,解决方法可能是添加运行条件,使构建跳过所有任务 - 像这样condition: not(contains(variables['Build.SourceVersionMessage'], '[skip ci]'))
  • 这个问题怎么样?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息吗?

标签: azure-devops build-pipeline


【解决方案1】:

我希望构建管道检查 PR 的源分支

要查看 PR 的源分支,您可以使用predefined system variables about PR:

System.PullRequest.SourceBranchSystem.PullRequest.TargetBranch

要获取拉取请求中正在审查的分支,我们应该选择变量System.PullRequest.SourceBranch

现在问题变成了,因为它运行的 PR 有新的提交 再次进入管道,这不应该发生,因为我有 [skip ci] in 提交消息。

我们知道,[skip ci][ci skip] 用于跳过运行 CI,就像选项一样 在 UI 上启用持续集成

但是,我们当前的场景是构建验证的分支策略,而不是 CI。这与 CI 非常不同,尽管它们似乎在执行相同的构建任务。分支策略是为了保护我们的分支不被不正确的提交破坏。这是经过验证的操作,而不是持续集成。

查看文档Skipping CI for individual commits了解更多详情。

因此,这是两种不同的场景,我们无法将 CI 设置应用于分支策略。

第二,分支策略用于保护我们的分支,任何提交都需要通过分支 pliocy 进行验证,虽然有时我们可以知道我们的修改不需要构建验证,但是我们不确定是否有我们忽略的地方这会导致我们的目标分支被破坏。跳过不必要的验证会给我们带来一些建设上的便利,但随着它带来的风险衡量,这些便利性可以忽略不计,所以我们不建议跳过分支机构策略的验证。

如果您坚持跳过构建验证,您可以尝试 LJ 的建议。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2019-02-21
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多