如何仅在推送时触发GitHub Workflow,PR合并后不触发
解决GitHub Push Workflow在PR合并时不触发的问题
问题根源
当Workflow由push事件触发时,github.event.pull_request对象并不存在,因此你之前使用的github.event.pull_request.merged == false条件完全无效,无法区分普通推送和PR合并推送。
可行解决方案
合并提交的核心特征是拥有多个父提交(普通提交仅含1个父提交),我们可以通过判断提交的父提交数量来识别合并提交,进而跳过Workflow执行。
修改后的完整Workflow代码:
on: push: branches: - test jobs: do_not_run_on_merged: # 仅当提交为非合并提交时执行(父提交数量等于1) if: ${{ github.event.head_commit.parent_ids | length == 1 }} runs-on: ubuntu-latest steps: - run: | echo This is not a merge
额外说明
- 该方法不仅能识别PR合并的提交,还会跳过所有通过命令行
git merge生成的合并提交,完全匹配需求。 - 若尝试通过提交信息(如包含
Merge pull request #)判断,可靠性较低,因为提交信息可被自定义修改。
内容的提问来源于stack exchange,提问作者lonelearner
相关产品推荐
相关产品推荐

