有一个关于 GitHub Actions 的未答复的 GitHub 社区讨论,当与 PR 中设置的基本分支发生冲突时,不会触发事件。 GitHub Actions 团队已经 5 年多没有针对这个问题提出真正的解决方案了。
我有 GitHub Action,它可以创建 Docker 映像并将其推送到 ECR 存储库。 这是问题发生时的场景:pull_request
提交
I--J <-- feature/first_branch (HEAD)
/
...--F--G--H--Z <-- master
和
J
存在冲突,现在我的 GitHub Action 中的 Z
事件不会被触发,因为存在冲突。我知道 pull_request
事件没有这个问题,但我必须使用
push
事件,因为我需要知道当前分支的基本分支是什么,因为我 pull_request
基本分支的 cache-from
图像。我有一个适合我的 hack - 我创建了另一个基于 latest
的分支 (
feature/second_branch
)。然后我做了一个没有意义的随机提交,所以 feature/first_branch
和 feature/second_branch
之间会有差异(因为当你比较的两个分支之间没有差异时,GitHub 不允许打开 PR)。feature/first_branch
一旦我打开一个 PR,其中
K--M <-- feature/second_branch (HEAD)
/
I--J <-- feature/first_branch
/
...--F--G--H--Z <-- master
是基础 - 我设法触发
feature/first_branch
事件,该事件有一个包含我想要的代码的分支,并且与其基础分支不冲突。
这样它们之间就不存在冲突,并且我得到了我的 Docker 镜像。这个 hack 的问题是,当 pull_request
没有
feature/first_branch
图像推送到 ECR 时,我没有图像可以缓存(这基本上类似于首先触发 latest
事件)。此问题不会发生在 CircleCI 流上,但我目前无法从 GitHub Actions 迁移此流。
有没有一种方法可以在不使用任何 hack 的情况下解决这个问题,或者至少比我的更简单?