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 ...
该条件会同时满足两个要求:
- 无论前面BDD测试步骤是执行成功、失败还是抛出异常中止,该步骤都会进入判断流程(由
always()保证) - 只有工作流是定时触发(
schedule事件)时才会真正执行上传操作,手动触发、push触发、PR触发等其他场景都会跳过该步骤
内容的提问来源于stack exchange,提问作者Vini.g.fer
相关产品推荐
相关产品推荐

