如何配置GitHub Actions:Log4j日志下Maven测试WARN失败后DEBUG重跑
GitHub Actions 测试失败自动Debug重跑配置方案
一、添加手动触发的配置复选框
在Workflow的触发条件中加入workflow_dispatch,提供一个复选框让用户选择是否启用「失败自动以Debug级别重跑」的功能:
on: push: branches: [ main ] workflow_dispatch: inputs: enable-debug-retry: description: '测试失败时自动以DEBUG级别重跑' required: true default: false type: boolean
二、主测试作业(WARN级别)
定义第一个作业,默认以log-level=WARN执行测试,同时记录测试结果状态,供后续作业判断是否需要重跑:
jobs: test-warn: runs-on: ubuntu-latest outputs: test-status: ${{ steps.test-step.outcome }} steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装依赖 run: npm install # 替换成你项目的依赖安装命令 - name: WARN级别执行测试 id: test-step continue-on-error: true # 即使失败也让作业继续,以便输出状态 run: npm test -- --log-level=WARN # 替换成你项目的测试命令,传入WARN级别参数
三、Debug级别重跑作业(仅当主测试失败且复选框启用时触发)
定义第二个作业,依赖主测试作业的结果,只有当主测试失败且用户勾选了复选框时,才以log-level=DEBUG重跑测试(如果你的测试框架支持,还可以只跑失败的用例):
test-debug-retry: runs-on: ubuntu-latest needs: test-warn if: ${{ needs.test-warn.outputs.test-status == 'failure' && github.event.inputs.enable-debug-retry == 'true' }} steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装依赖 run: npm install # 替换成你项目的依赖安装命令 - name: DEBUG级别重跑测试 run: npm test -- --log-level=DEBUG # 替换成你项目的测试命令,传入DEBUG级别参数 # 如果你的测试框架支持仅重跑失败用例,比如pytest可以改成:pytest --log-level=DEBUG --last-failed
关键说明
continue-on-error: true:确保主测试作业即使失败也能输出状态,避免直接终止导致后续作业无法触发- 作业输出
test-status:传递主测试的结果状态(success/failure)给后续作业 - 条件判断
if:精准控制Debug重跑的触发时机,只有满足「主测试失败+用户勾选启用」两个条件才执行 - 测试命令替换:根据你项目的技术栈(比如Python、Java等),替换对应的依赖安装和测试命令,以及日志级别参数的传递方式
内容的提问来源于stack exchange,提问作者Rob Audenaerde
相关产品推荐
相关产品推荐

