如何使提交不可变的 Github 状态检查?
How to make Github status-checks on a commit immutable?
我在 CodeBuild 中有 2 个测试 运行,它们向提交历史报告状态。
- 测试一:PR更新事件触发。由于不遵循我的 PR 代码标准而失败
- 测试 2:由 git 分支上的 PUSH 事件触发。成功,开发者可以在他们的分支上自由工作。
Test 1
失败后,PR 应该显示失败状态,直到新的提交。但问题是 Test 2
成功并覆盖 Github 拉取请求页面上的状态检查。我想让PR只有在两个测试都通过时才具有绿色状态。
我检查了 Github official document 的提交状态:
Statuses cannot be changed once added to a commit (they’re completely
immutable), but any number of statuses may be attached to a single
commit. We only display the most recent status for any given commit in
our UI.
但我不知道如何启用它。如何使提交时的 Github 状态检查不可变?
一个更好的文档是 REST API documentation for statuses。这里的问题很可能是您对两种状态使用了相同的上下文字段,但您正在进行不同的检查。这些状态在技术上都是不可变的,但是当您创建具有相同上下文的新状态时,它会用该状态覆盖旧状态。
您的 PR 检查比推送检查更严格,但它们使用相同的上下文。因此,当您的推送检查成功更新状态时,这将覆盖 PR 更新事件。如果您确实 运行 设置了两组独立的测试,那么使用两个不同的上下文,它们将显示为两个独立的检查。
我认为您要求的是如何永远不允许具有相同上下文的新状态覆盖状态,这是不可能的。无论如何你都不会想要那个,因为如果 CI 服务器有一个临时问题并且你需要重新 运行 检查,你永远无法用那个提交替换旧的失败,并且您必须进行无操作更改并推送新提交才能合并。
我在 CodeBuild 中有 2 个测试 运行,它们向提交历史报告状态。
- 测试一:PR更新事件触发。由于不遵循我的 PR 代码标准而失败
- 测试 2:由 git 分支上的 PUSH 事件触发。成功,开发者可以在他们的分支上自由工作。
Test 1
失败后,PR 应该显示失败状态,直到新的提交。但问题是 Test 2
成功并覆盖 Github 拉取请求页面上的状态检查。我想让PR只有在两个测试都通过时才具有绿色状态。
我检查了 Github official document 的提交状态:
Statuses cannot be changed once added to a commit (they’re completely immutable), but any number of statuses may be attached to a single commit. We only display the most recent status for any given commit in our UI.
但我不知道如何启用它。如何使提交时的 Github 状态检查不可变?
一个更好的文档是 REST API documentation for statuses。这里的问题很可能是您对两种状态使用了相同的上下文字段,但您正在进行不同的检查。这些状态在技术上都是不可变的,但是当您创建具有相同上下文的新状态时,它会用该状态覆盖旧状态。
您的 PR 检查比推送检查更严格,但它们使用相同的上下文。因此,当您的推送检查成功更新状态时,这将覆盖 PR 更新事件。如果您确实 运行 设置了两组独立的测试,那么使用两个不同的上下文,它们将显示为两个独立的检查。
我认为您要求的是如何永远不允许具有相同上下文的新状态覆盖状态,这是不可能的。无论如何你都不会想要那个,因为如果 CI 服务器有一个临时问题并且你需要重新 运行 检查,你永远无法用那个提交替换旧的失败,并且您必须进行无操作更改并推送新提交才能合并。