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

Github Actions如何实现仅定时触发时无论测试是否失败都上传Allure报告

Github Actions 限定定时任务才执行Allure报告上传的解决方案

你现有配置的问题出在if条件的写法上:

  • 整个条件判断逻辑没有全部放在${{ }}作用域内,Github Actions无法正确解析github.event_name == 'schedule'的判断逻辑
  • 用了转义后的&&而非原生&&作为逻辑与操作符

修改方案

把上传步骤的if字段替换为以下内容即可,所有判断逻辑都要放在${{ }}内部:

if: ${{ always() && github.event_name == 'schedule' }}

修改后的完整步骤代码参考:

...
    - name: Run BDD tests
      env:
        STAGE_EMAIL: ${{ secrets.STAGE_EMAIL }}
        STAGE_PASSWORD: ${{ secrets.STAGE_PASSWORD }}
      run: |
        rm -rf allure-results
        mkdir -p allure-results
        behave --junit --junit-directory allure-results

    - name: Upload test report to Allure
      if: ${{ always() && github.event_name == 'schedule' }}
      env:
        ALLURE_SERVER: ${{ secrets.ALLURE_SERVER }}
      run: |
        python send_test_results.py $GITHUB_REPOSITORY $GITHUB_RUN_ID $ALLURE_SERVER default
...

该条件会同时满足两个要求:

  1. 无论前面BDD测试步骤是执行成功、失败还是抛出异常中止,该步骤都会进入判断流程(由always()保证)
  2. 只有工作流是定时触发(schedule事件)时才会真正执行上传操作,手动触发、push触发、PR触发等其他场景都会跳过该步骤

内容的提问来源于stack exchange,提问作者Vini.g.fer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:18:03