因此,我一直在构建一个构建管道,每当对 master 执行拉取请求时都会触发该管道,因此我们有一个分支策略,以便对 master 分支的唯一更改是通过拉取请求。
我希望构建管道检查 PR 的源分支,并作为构建管道的一部分对源分支进行一些提交。我以为我可以只使用该Build.SourceBranchName
变量,但是当触发管道时 SourceBranchName 为主。所以我无法使用它。
有没有简单的方法可以做到这一点?
因此,我一直在构建一个构建管道,每当对 master 执行拉取请求时都会触发该管道,因此我们有一个分支策略,以便对 master 分支的唯一更改是通过拉取请求。
我希望构建管道检查 PR 的源分支,并作为构建管道的一部分对源分支进行一些提交。我以为我可以只使用该Build.SourceBranchName
变量,但是当触发管道时 SourceBranchName 为主。所以我无法使用它。
有没有简单的方法可以做到这一点?
我希望构建管道检查 PR 的源分支
要检查 PR 的源分支,您可以使用关于 PR 的预定义系统变量:
System.PullRequest.SourceBranch
和System.PullRequest.TargetBranch
要获取拉取请求中正在审查的分支,我们应该选择变量System.PullRequest.SourceBranch
。
现在问题变成了由于对 PR 的新提交,它再次运行管道,这不应该发生,因为我在提交消息中有 [skip ci]。
正如我们所知,[skip ci]
or[ci skip]
用于跳过运行 CI,例如
在 UI 上启用持续集成选项:
但是,我们当前的场景是构建验证的分支策略而不是 CI。这与 CI 非常不同,尽管它们似乎在执行相同的构建任务。分支策略是为了保护我们的分支不被不正确的提交破坏。这是经过验证的操作,而不是持续集成。
查看文档为单个提交跳过 CI 以获取更多详细信息。
因此,这是两种不同的场景,我们无法将 CI 设置应用于分支策略。
其次,分支策略用于保护我们的分支,任何提交都需要通过分支 pliocy 进行验证,虽然有时我们可以知道我们的修改不需要构建验证,但我们不确定是否有任何我们忽略的地方导致我们的要破坏的目标分支。跳过不必要的验证会给我们带来一些建设上的便利,但以它带来的风险衡量,这些便利可以忽略不计,所以我们不建议跳过分支机构策略的验证。
如果您坚持跳过构建验证,您可以尝试 LJ 的建议。