python - 在 github 工作流程中崩溃后有什么方法可以自动重启
问题描述
Deleting original file NF - PAID MY DUES - youtube-LLAgke7QprM.f140.m4a (pass -k to keep)
/home/runner/work/_temp/9708cc07-bf79-4478-beda-081cae98f143.sh: line 3: 3270 Segmentation fault (core dumped) python3 nani.py
Error: Process completed with exit code 139.
我正在尝试在 git 工作流程上托管我的 python 机器人。
它将播放音乐(在 Telegram 语音聊天中)。
但是一段时间后它总是崩溃。
有没有办法在出现任何错误后自动重新启动工作流程?
用于检查工作流实现的 Github 存储库:https ://github.com/Nksama/workflows
解决方案
据我所知,目前还没有办法通过配置自动重启工作流程......
但是,使用带有 Github Actions 的工作流实现有不同的方法可以实现类似的结果。这不会完全是重新启动,因为解决方法是在工作流失败时再次启动它。
第一个选项可能是使用带有workflow_run触发器的另一个工作流来检查第一个工作流是否成功运行,如果没有,则发送一个调度事件以再次运行它(在这种情况下,您必须将一个repository_dispatch触发器添加到第一个工作流程)。
另一种选择可能是在您的第一个作业(构建)结束时添加 2 个步骤,以将作业状态保存为工件。
- name: Create file status_job1.txt and write the job status into it
if: always()
run: echo ${{ job.status }} > status_job1.txt
- name: Upload file status_job1.txt as an artifact
if: always()
uses: actions/upload-artifact@v1
with:
name: pass_status_job1
path: status_job1.txt
然后,第二个作业总是会检查第一个作业的输出:
job2:
runs-on: ubuntu-latest
needs: [job1]
if: always()
steps:
- name: Download artifact pass_status_job1
uses: actions/download-artifact@v1
with:
name: pass_status_job1
- name: Set the status of Job 1, as output parameter
id: set_outputs
run: echo "::set-output name=status_job1::$(<pass_status_job1/status_job1.txt)"
- name: Show the values of the output
run: |
# using the syntax steps.<step_id>.outputs.<output_name> to access the output parameter
echo "status_job1 = ${{ steps.set_outputs.outputs.status_job1 }}"
# other steps or commands to perform an operation according to its value.
[...]
例如,在结束时,如果 job1 的状态为失败(在这种情况下,您还必须向工作流添加repository_dispatchjob2
触发器) ,您可以将 a 发送到同一工作流以再次启动工作流(如我解释说,它不会完全重新启动,因为这将创建一个新的工作流运行)。dispatch event
这是一个创建存储库调度事件的操作,或者您可以直接调用Github API来完成
推荐阅读
- ruby-on-rails - 访问液滴轨道内的当前用户 5
- python-3.x - 获取 ABCMeta 的所有已注册子类
- c# - 如何允许用户从列表框中复制项目并粘贴到 Windows 窗体之外
- reactjs - 使用 jest 进行多环境测试
- async-await - 从任务列表中捕获异常
- java - If Else - Else 在 Java Netbeans 中无法正常工作
- sql - 如何在 SQL Server 中选择最近 7 天的日期
- javascript - 如何使用 Javascript 访问另一个带有空括号(内部没有点)的对象中的对象?
- google-app-maker - Google App Maker - SuggestBox - 小部件的数据源未处于“加载”状态
- spring - 在响应标头中检索令牌时出现问题 - Angular 6 - 后端 Spring