【问题标题】:Make contextual github checks required to pass进行上下文 github 检查以通过
【发布时间】:2021-02-09 00:24:20
【问题描述】:

我有 4 个 Azure 管道,它们在创建 PR 时执行检查。它们被配置为根据所做的更改排除/包含某些检查。例如,如果 PR 仅包含前端代码更改,则没有理由运行与检查后端代码更改相关的检查管道。

在 GitHub 分支配置中,有一个选项“要求在合并之前通过状态检查”,但是当您检查时,您必须选择哪些管道必须通过。这样做会设置它,以便您选择的管道必须运行并通过才能合并,但根据我们的配置,它可能没有理由运行,因此 PR 将永远卡住。

有没有办法让 GitHub 状态检查要求在合并之前通过,但必须通过的状态检查是在 PR 创建时确定的,而不是事先确定的?

【问题讨论】:

    标签: github continuous-integration azure-pipelines azure-pipelines-yaml github-check-run


    【解决方案1】:

    根据我的测试,我可以重现这种情况。

    当我在 Github 中创建多个状态检查(Azure Pipeline)时,这些检查只接受创建拉取请求后的构建状态。

    因此,由于某些配置(如路径过滤器),如果相关管道没有运行,那么这个PR就会卡住。

    在这种情况下,您可以使用API 将现有的 Azure 管道状态发送到状态检查。

    API 网址:

    Post https://api.github.com/repos/{owner}/{repo}/statuses/{sha}
    

    请求正文:

    {
      "state": "success",
      "target_url": "Build Status badge Url",
      "description": "Build verify",
      "context": "Staus Check name"
    }
    

    那么你就可以通过 Github 中的状态检查了。

    【讨论】:

    • 谢谢凯文!我想我对我想要的结果有点不清楚。最终目标,尽可能简单地说,是我希望在 PR 可以合并之前,无论出于何种原因触发的任何检查都是绿色的。因此,无论在 PR 中是否检测到 1 个或 3 个检查,它们都应该通过才能合并。这可能吗?
    • 嗨@B.Witter。我能理解你的要求。但是当您根据需要设置状态检查时,必须通过这些必需的检查才能完成合并。如果 2 是必须的,那么只有 1 和 3 不能完成合并。所以你的想法现在无法实现。解决方法是使用 api 手动将通过状态发送到状态检查。在我看来,您的需求确实很有价值。
    • 有没有办法建议对 github 进行类似的更改?我在联系页面上没有找到任何东西。
    • 嗨@B.Witter。您可以在本站分享您的反馈:support.github.com/contact/… 另一方面,如果答案可以给您一些帮助,您可以考虑接受它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2016-05-18
    • 2021-01-20
    相关资源
    最近更新 更多