如何在Azure DevOps中只忽略1个分支策略?

roejwanj  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在处理一个Azure DevOps git项目,我想让满足某些需求的Pull请求忽略[minimum 2 reviewers]策略,但保留所有其他策略。正确的方法是什么?
到目前为止我所尝试的:

  • 我已经实现了一个API来检查所有这些条件,所以这部分没有问题
  • 我曾想过让相同的代码批准分支,并给予服务用户额外的权限,但我的代码失败了
pullRequest.Status = PullRequestStatus.Completed;
pullRequest.CompletionOptions = new GitPullRequestCompletionOptions() { SquashMerge = true };
await gitClient.UpdatePullRequestAsync(pullRequest, pullRequest.Repository.Id, pullRequest.PullRequestId);

参数名称:您只能更新审阅者、说明、标题、合并状态和状态。

  • 因此,现在我必须绕过所有分支策略,并尝试通过我的服务(代码)帐户完成拉取请求,但在这里,我只能在完成拉取请求时绕过所有策略,这意味着我必须找到一种方法让我的代码自己检查所有这些分支策略。

有没有更好的办法来解决这个问题?

更新

我觉得这个问题不是很清楚,所以我想再解释一下:
当我们把批准看作是一个需求时,我们总是认为某个开发人员正在执行某个操作,因此我们需要其他人来批准该操作以确保其安全。然而,有些情况下,我们可以自动化所有操作,而不需要任何与代码的人工交互。例如:

  • 想象一下,您的基础团队或可靠的第三方(如Microsoft)发布了您正在使用的SDK的次要版本。如果您有可以信任的良好E2 E,集成和单元测试,则没有理由要求某人检查代码。条件将更改为:
  • 代码可以编译
  • 测试通过了
  • 仅CSproj文件发生了更改,并且更改模式不允许任何非发布的内容(版本1.1.1.1-Pull-Requestxxx不可接受)
fykwrbwg

fykwrbwg1#

同样,我不知道您对组织中的安全性有多关注,也不知道您的工件是否需要被信任。我仍然认为您正在尝试做的事情非常不安全。请考虑以下场景:用户可以更改管道代码吗?如果可以,他们可以轻松地删除所有测试并拥有绿色管道,这将允许pull request自动完成到您的主分支。如果您仍然想这样做,我建议您实现post trigger或hook for pipeline,在成功完成后,它将触发另一个安全的“Approver”管道,它将验证管道构建状态并批准pull request。

相关问题