我有一个Python脚本,它在创建拉请求时运行.该脚本对repo中的文件执行一些判断,并打印结果以及退出代码(如果文件看起来正常,则为0;如果文件有问题,则为1).然后,我希望捕获脚本的输出,并使用结果对拉请求进行自动注释.
对于未通过判断的脚本(退出代码为1),我可以捕获输出或让退出代码使步骤失败,但不能两者兼而有之.将多行输出捕获为$GITHUB_OUTPUT
似乎忽略了Python脚本的退出代码.
这是我的工作流程(自动注释步骤目前是一个占位符,直到我可以运行运行脚本步骤)
name: Test Data
on:
pull_request
jobs:
check_data:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get branch name
shell: bash
run: echo "BRANCH=${{ github.event.pull_request.head.ref }}" >> "$GITHUB_ENV"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: pip install pandas
- name: Run script
id: check_data
shell: bash
run: |
{
echo "results<<EOF"
echo "$(python tools/check_data.py $BRANCH)"
echo "EOF"
} >> "$GITHUB_OUTPUT"
- name: Auto comment
shell: bash
run: echo "${{ steps.check_data.outputs.results }}"
如果Python脚本以1退出,我希望Run script
步失败.在以下情况下可以很好地工作:
- name: Run script
run: python tools/check_data.py $BRANCH
但这显然不会捕获标准输出以供下一步使用.
有没有人想到,如果脚本失败,我如何既能捕获输出,又能在失败后退出步骤?我可以有两个步骤,然后运行脚本两次,但效率不是很高.