Azure devops Azure Devops从PR触发器获取源分支构建管道
因此,我一直在构建一个构建管道,每当对master执行pull请求时就会触发该管道,因此我们有一个分支策略,这样对master分支的唯一更改就是通过pull请求 我希望构建管道签出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:
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]'))
问题如何?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息?