GitHub Actions合并PR到develop分支时任务未执行问题排查
问题排查与解决方案
核心错误原因
你的任务条件里的github.ref判断逻辑完全错误:
- 在
pull_request事件上下文里,github.ref指向的是PR的源分支(比如你从feature/xxx开PR到develop,这个值就是refs/heads/feature/xxx),永远不可能等于refs/heads/develop。 - 你尝试把
heads改成base是无效的,GitHub Actions里不存在refs/base/xxx这种格式的引用路径。
修正方案
方案1:基于pull_request事件触发(保留PR上下文)
修改任务执行条件,通过github.event.pull_request.base.ref判断PR的目标分支是否为develop:
if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'develop' }}
这个条件会准确匹配:当PR被关闭且已合并,并且目标分支是develop的场景。
方案2:基于push事件触发(更简洁,适合不需要PR上下文的场景)
PR合并本质是向目标分支推送代码,所以可以直接监听push到develop分支的事件:
- 先调整工作流触发条件,给
push指定分支:
on: push: branches: - develop pull_request: branches: - develop - main - test - feature workflow_dispatch:
- 然后任务执行条件简化为:
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' }}
验证方式
你可以在GitHub Actions的工作流日志里,添加一步run: echo "${{ toJSON(github) }}",查看上下文变量的实际值,确认每个变量是否符合预期,方便后续排查类似问题。
内容的提问来源于stack exchange,提问作者ashabc
相关产品推荐
相关产品推荐

