You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Workflow schedule触发不生效 如何实现双触发兼容

问题结论

你的推测完全正确。
定时触发失效的核心原因是:

  • 当工作流被schedule事件触发时,GitHub 提供的事件上下文github.event中不存在workflow_run字段,此时github.event.workflow_run.conclusion取值为空,你配置的if判断条件计算结果为false,扫描任务的job会被直接跳过,因此不会实际执行。
  • 原有if条件只适配了workflow_run这一种触发场景,没有兼容定时触发的事件上下文。
修改方案

调整job级别的if判断逻辑,同时覆盖两种触发场景的放行规则:

  • 如果是定时(schedule)触发,直接允许job执行
  • 如果是上游工作流完成(workflow_run)触发,仅在上游工作流执行结果为success时允许job执行

修改后的if条件写法如下:

if: github.event_name == 'schedule' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')

替换原有配置中job下的if行即可,修改后完整的job配置参考:

jobs:
  app-dependencies-vulnerabilities:
    name: Scan for vulnerability
    if: github.event_name == 'schedule' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Running snyk
        uses: snyk/actions/gradle@master
        with:
          command: monitor
          args: --org=myorg --project-name=${{ github.repository }} --remote-repo-url=https://github.com/${{ github.repository }}.git
          json: true
补充说明

你原有配置中workflow_run事件监听的completed类型,会在上游工作流所有结束状态(成功、失败、取消、超时等)下都触发当前工作流,修改后的判断条件保留了原有的过滤逻辑,不会在上游工作流执行失败时误跑扫描任务,符合预期规则。

内容的提问来源于stack exchange,提问作者user16269092

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:57:19