【问题标题】:Merging blocked indefinitely on GitHub合并在 GitHub 上被无限期阻止
【发布时间】:2021-06-24 16:44:04
【问题描述】:

上下文如下:-

  1. 我配置了我的 GitHub CI 工作流程文件(YAML 文件),以便工作流程仅在某些目录发生更改时运行:
    name: testing                                                                                                                                                 
    on:
      pull_request:
        branches:
          - develop
        paths:
          - 'dir_1/**'
          - '!dir_1/README.md'
          - 'dir_2/**'
          - '!dir_2/README.md'
  1. 我在develop 分支上设置了一个分支保护规则,只有在状态检查成功时才可以合并到它。

现在,当我基于develop 分支创建一个分支时,对dir_3 进行一些更改(请注意它与YAML 文件代码sn-p 中提到的dir_1 和dir_2 不同),推送该分支并创建一个拉取请求,GitHub 期望状态检查完成并阻止合并,直到它们完成,如下所示:

当我检查 Actions 选项卡时,我发现没有任何操作正在运行。

所以合并被无限期阻止。我认为这是因为分支保护规则和 YAML 文件代码 sn-p 相互矛盾(分支保护规则正在等待状态检查完成,但由于 YAML 文件的限制,没有运行状态检查)。我有以下问题:-

  1. 我的推理正确吗?
  2. 如果是,有没有办法保护某个分支的某些子目录而不是 GitHub 上的整个分支?如果“受保护的子目录”未更改,我想允许合并。
  3. 如果 1 为是,2 为否,如果 YAML 文件中未指定的子目录发生更改,是否有其他方法允许合并(同时保留分支保护规则)?

感谢您抽出宝贵时间阅读问题。

在谷歌搜索这个问题时,我发现了这个result,但它不是很有帮助。

【问题讨论】:

    标签: github github-actions


    【解决方案1】:

    我的一位办公室同事提出了上述问题的替代解决方案。使用paths-filter 操作而不是使用Github 操作documentation 中提到的paths 或paths-ignore 键可以解决问题。因此,如果更改的路径不应该触发工作流中的某个步骤,则该步骤将在运行测试时显示为已跳过,并且 GitHub 不会无限期地等待测试完成运行(即,它将显示拉取请求可以是接受)。

    这个问题在issue 的这个comment 中也有描述。我的同事在同一问题中将解决方案发布为comment。您可以参考它来了解如何使用paths-filter 操作来解决上述问题。

    如果有人有更好的解决方案来解决这个问题,请发布。现在,我将其标记为可接受的解决方案。谢谢。

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 2021-02-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多