我所在项目的分支设置希望强制执行只有 dev 分支可以合并到 master 的规则。
有没有办法通过分支机构政策进行设置?如果没有,还有其他选择吗?
我们正在努力防止任何开发人员尝试从错误的分支合并到 master 中。
谢谢你的帮助。
Lan*_*SFT 12
有没有办法通过分支机构政策进行设置?如果没有,还有其他选择吗?
Azure Devops 无法控制哪个分支可以合并到 master 中,但我们可以使用分支策略作为解决方法。这是我的工作方向:
Step1 .使用一个命令行任务创建一个简单的管道(无论经典还是yaml,但经典更适合这种场景):
script:ThisIsNotDevBranch.exe 测试
yaml 格式:
steps:
- script: 'ThisIsNotDevBranch.exe test'
failOnStderr: true
displayName: 'Command Line Script'
condition: ne(variables['System.PullRequest.SourceBranch'], 'refs/heads/dev')
Run Code Online (Sandbox Code Playgroud)
Step2 .配置master分支的分支策略,添加构建策略,设置如下:
选择在步骤 1 中创建的管道作为构建策略中要使用的管道。
怎么运行的:
1.每当我创建一个 Pull 请求将一个分支合并到 master 时,步骤 1 中创建的管道就会自动触发。
2.我使用了CMD任务中实际上不存在的命令,并选中了Fail On Standard Error复选框。那么这个任务将抛出错误并使任务失败,管道如果运行的话。
3.根据该任务中的条件,仅当 PR 的源分支为 dev 分支(refs/heads/dev)时,该任务才会运行。
4.现在,如果我创建一个 PR 将分支合并testBranch到 master=> 管道运行=> 自定义条件=true=> 任务将运行,那么它会抛出错误以使管道失败=> 然后 PR 无法完成(如果管道失败,PR 中的完整按钮将无法工作)。
然后,如果我创建一个 PR 将分支合并dev到 master => 管道运行 => 条件 = false => 任务将跳过 => 管道成功 => 我们可以批准并完成 PR。
笔记:
1.如果你想设置只有dev分支可以合并到master,那么使用refs/heads/devin条件。如果是 Dev,请refs/heads/Dev改为使用。
2.这个方向的核心是条件CMD任务,我们可以用其他类型的任务代替它。此外,我们不必创建管道来运行任务。如果需要,只需在现有管道中添加条件任务即可。但它需要额外的步骤来区分管道是由 PR 还是正常更新的源文件触发的。因此,我建议创建一个新的简单经典管道来进行验证。
此外:
1.有关System.PullRequest.SourceBranch的详细信息。
2.除了构建策略之外,您还可以尝试分支策略中的其他策略来投影您的主分支。正如Krzysztof Madej所说,您还可以考虑代码审查员选项。将这些政策选项结合起来是一个不错的选择!
| 归档时间: |
|
| 查看次数: |
6424 次 |
| 最近记录: |