gpt4 book ai didi

github-actions - 在 github 工作流中超时运行命令

转载 作者:行者123 更新时间:2023-12-04 11:26:45 27 4
gpt4 key购买 nike

我有一个类似于下面代码的 GitHub 操作。我有一个文件,它打算永远运行,但在需要时被用户打断。我试过使用 timeout但它不起作用,并给出了一些奇怪的信息。
对此有一个小小的警告,如果进程超时,我希望这不会引发错误,以便操作继续并报告成功。但是,如果 python 脚本本身失败,我希望报告这一点,因为运行它进行调试是在操作中运行它的重点。

name: Run file with interrupt then save results
on:
push:
branches:
- master

jobs:
build:
strategy:
matrix:
python-version: [3.7]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for ex 06
run: |
python -m pip install --upgrade pip
cd /home/runner/work/repo_name/repo_name
pip install -r requirements.txt
- name: Run file with timeout
run: |
cd /home/runner/work/repo_name/repo_name/
echo "hi1"
timeout 5 sleep 10
echo "hi2"
python RunsForever.py
echo "hi3"
- name: Upload results
uses: actions/upload-artifact@v2
with:
name: result
path: /home/runner/work/repo_name/repo_name/output/
我怎样才能让超时正常工作?当前的错误信息是:
Run cd /home/runner/work/repo_name/repo_name/
cd /home/runner/work/repo_name/repo_name/
echo "hi1"
timeout 5 sleep 10
echo "hi2"
python RunsForever.py
echo "hi3"
shell: /bin/bash -e {0}
env:
pythonLocation: /opt/hostedtoolcache/Python/3.7.8/x64
hi1
##[error]Process completed with exit code 124.
我不明白可能是什么问题。我预计该问题与 RunsForever.py 的超时函数隐藏输出有关。 ,但实际上 timeout本身似乎不起作用。我试过用 apt-get 安装,也无济于事。
是否有一些调试可以让它运行?有没有其他方法可以杀死进程,以便在预定的时间后有效地中断它?

最佳答案

更新
根据评论,我更新了响应以提供添加超时的正确方法,并且在超时时仍然成功,同时还支持正常失败。
基本上我们会检查错误代码 124(超时)和 0(成功)并确保我们不会在这些代码上退出。但是如果我们收到其他任何东西,那么我们将退出以匹配 github 操作通常在失败时所做的操作
DEMO SUCCESS ON TIMEOUT
DEMO FAILURE ON ERROR
代码片段

    - name: no timeout
run: timeout 10 python ./RunsForever.py || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi

- name: timeout # We add or so that return code is not none-zero which causes pipeline to fail
run: timeout 1 python ./RunsForever.py || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi
以前的回复
只处理超时但不继续运行超时而不报告失败。但是 OP 也希望它在超时时成功,因此提供了上面的更新。
您可以使用 timeout-minutes 来做到这一点。以您的代码为例
    - name: Run file with timeout
timeout-minutes: 1 # Times out after 1 minute
run: |
cd /home/runner/work/repo_name/repo_name/
echo "hi2"
python RunsForever.py
echo "hi3"
在这里为作业添加超时是资源: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes
要为单个步骤添加超时,请使用以下资源: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes

关于github-actions - 在 github 工作流中超时运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63641822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com