如何配置GitHub Actions让deploy workflow仅在push触发CI完成后运行,避免PR误触发
问题根因
你的deploy workflow被误触发的核心原因是:CI workflow配置了pull_request事件触发,当你提交从develop到main的PR时,CI会被PR事件触发运行,运行完成后满足deploy的workflow_run触发规则(关联CI workflow、源分支是develop、运行完成),所以deploy被启动。
修复方案
你只需要在deploy workflow的根级别添加全局if判断,过滤非push事件触发的CI运行即可,修改后的deploy配置如下:
name: deploy on: release: types: [released] workflow_run: workflows: ["ci"] branches: [develop] types: [completed] # 新增全局过滤条件 if: | github.event_name == 'release' || (github.event.workflow_run.event == 'push' && github.event.workflow_run.conclusion == 'success') jobs: # 你原有部署任务的配置保持不变 ...
配置说明
github.event.workflow_run.event字段可以获取到上游CI workflow的触发事件类型,此处判断仅允许push事件触发的CI运行完成后执行部署,自动过滤所有PR事件触发的CI运行github.event.workflow_run.conclusion == 'success'是额外加的防护逻辑,确保只有CI运行成功后才触发部署,避免CI失败后依然执行部署操作- 原有release触发部署的逻辑不受任何影响
内容的提问来源于stack exchange,提问作者xmartinez
相关产品推荐
相关产品推荐

