如何在GitHub Actions中记录Python脚本运行产生的错误响应?
GitHub Actions 层面采集Python脚本错误日志的方案
核心逻辑
GitHub Actions 默认会在步骤返回非0退出码时直接终止工作流,且不会主动将步骤输出落盘。你可以通过调整步骤容错配置+输出重定向实现无侵入式的错误采集,无需修改现有Python脚本,适配你当前Windows runner的配置如下:
修改后的工作流配置
name: Bug Tracker # Controls when the workflow will run on: # Triggers the workflow on push request events push: branches: [ main ] # Allows you to run this workflow manually from the Actions tab (for testing) workflow_dispatch: jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v4 # 建议升级到最新稳定版的checkout动作 - name: setup python uses: actions/setup-python@v5 with: python-version: 3.8 - name: Run File and collect bug id: run_script continue-on-error: true # 核心配置:脚本运行失败也不终止工作流 run: | echo Running File... # 将标准输出和标准错误同时输出到控制台和日志文件 python script.py 2>&1 | Tee-Object -FilePath run_log.txt # 将退出码写入步骤输出,供后续步骤判断 echo "exit_code=$LASTEXITCODE" >> $env:GITHUB_OUTPUT - name: Handle run result run: | if ($env:EXIT_CODE -ne 0) { echo "Script run failed, exit code: $env:EXIT_CODE" # 可以给错误日志重命名,方便后续识别 Rename-Item -Path run_log.txt -NewName error_log_$(Get-Date -Format "yyyyMMddHHmmss").txt # 此处可添加额外逻辑,比如发送告警、提交日志到仓库等 } else { echo "Script run success" } env: EXIT_CODE: ${{ steps.run_script.outputs.exit_code }} # 可选配置:将日志作为Artifact持久化保存,可在Actions运行页面下载 - name: Upload log artifact uses: actions/upload-artifact@v4 with: name: run-logs path: "*.txt" retention-days: 30 # 日志保留30天,可自定义
配置说明
continue-on-error: true:确保Python脚本执行失败后,后续的日志处理逻辑仍可正常执行2>&1 | Tee-Object -FilePath run_log.txt:PowerShell环境下的输出重定向写法,会把Python脚本的标准输出、标准错误同时输出到控制台和本地日志文件,避免丢失错误栈信息- 退出码判断逻辑可以根据你的需求扩展,比如失败时自动提交错误日志到仓库、发送内部告警等
- 升级了官方动作的版本到最新稳定版,修复旧版本的已知问题,兼容性更好
内容的提问来源于stack exchange,提问作者Jordan K
相关产品推荐
相关产品推荐

