GitHub Actions单步骤超时后仍执行后续步骤的实现方案
GitHub Actions 实现负载测试超时后仍执行VM关闭步骤
核心实现方案
利用GitHub Actions原生特性,既能单独终止挂起的负载测试步骤,又能保证VM关闭步骤必执行:
- 给负载测试步骤单独配置
timeout-minutes:仅终止该步骤,不会中断整个工作流任务 - 给关闭VM的步骤添加
if: always():无论前置步骤是成功、失败、超时还是被取消,该步骤都会强制执行 - 可选配置
continue-on-error: true:若不需要负载测试的失败/超时影响工作流整体状态,可添加此参数
示例Workflow代码
name: VM负载测试工作流 on: [push] jobs: vm-test-flow: runs-on: ubuntu-latest steps: - name: 1. 启动VM run: | # 替换为实际启动VM的命令 echo "VM启动完成" - name: 2. 运行负载测试(设置单独超时) timeout-minutes: 30 # 自定义超时时长,比如30分钟 continue-on-error: true # 可选:若不需要测试失败导致工作流失败则开启 run: | # 替换为实际负载测试命令 echo "执行负载测试..." # 模拟测试挂起场景:sleep 3600 - name: 3. 关闭VM(始终执行) if: always() run: | # 替换为实际关闭VM的命令 echo "VM已关闭"
关键细节说明
timeout-minutes仅作用于当前步骤:当负载测试超时后,只会终止该步骤的进程,不会影响后续步骤和整个任务的运行if: always()是强制执行的核心:覆盖所有前置步骤的状态,确保VM不会因流程中断而闲置产生额外成本continue-on-error: true为可选配置:如果需要工作流状态反映负载测试的结果,可以去掉该参数,但关闭VM的步骤依然会正常执行
内容的提问来源于stack exchange,提问作者Nectar Zuzi
相关产品推荐
相关产品推荐

