Azure devops Azure Devops从PR触发器获取源分支构建管道

Azure devops Azure Devops从PR触发器获取源分支构建管道,azure-devops,build-pipeline,Azure Devops,Build Pipeline,因此,我一直在构建一个构建管道,每当对master执行pull请求时就会触发该管道,因此我们有一个分支策略,这样对master分支的唯一更改就是通过pull请求 我希望构建管道签出PR的源分支,并作为构建管道的一部分对源分支进行一些提交。我想我可以只使用Build.SourceBranchName变量,但是当触发管道时,SourceBranchName是master。所以我不能用它 有什么简单的方法可以做到这一点吗 我希望构建管道签出PR的源分支 要签出PR的源分支,可以使用about PR:

因此,我一直在构建一个构建管道,每当对master执行pull请求时就会触发该管道,因此我们有一个分支策略,这样对master分支的唯一更改就是通过pull请求

我希望构建管道签出PR的源分支,并作为构建管道的一部分对源分支进行一些提交。我想我可以只使用
Build.SourceBranchName
变量,但是当触发管道时,SourceBranchName是master。所以我不能用它

有什么简单的方法可以做到这一点吗

我希望构建管道签出PR的源分支

要签出PR的源分支,可以使用about PR:

System.PullRequest.SourceBranch
System.PullRequest.TargetBranch

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

现在的问题是,因为它运行的PR有一个新的提交 管道,这不应该发生,因为我在中有[skip ci] 提交消息

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

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

查看文档以了解更多详细信息

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

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


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

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