在 CLI 中观看 GH Actions 工作流输出?

Posted

技术标签:

【中文标题】在 CLI 中观看 GH Actions 工作流输出?【英文标题】:Watch GH Actions workflow output in CLI? 【发布时间】:2021-12-21 21:46:10 【问题描述】:

我正在尝试通过 CLI 在特定分支上执行 github 工作流。此处提供了相关文档https://cli.github.com/manual/gh_workflow_run

是否有可能以某种方式获得与终端中的浏览器 UI 相同的日志?我想以编程方式与之交互。

如果可以使用他们的 rest api,那就更好了。 https://docs.github.com/en/rest/reference/actions#create-a-workflow-dispatch-event 根据文档,它只返回一个 Status: 204 No Content

【问题讨论】:

【参考方案1】:

可以使用 Github API 和您提到的 dispatch_event API 远程触发工作流。

Github CLI 有各种工作流命令(runlistviewenabledisable)。您可以在official documentation找到更多信息


要从 Github CLI as explained here 获取日志,您可以使用以下命令:

gh run view run-id --log

请注意,如果您不指定 run-id,GitHub CLI 会返回一个交互式菜单供您选择最近的运行,然后返回另一个交互式菜单供您从运行中选择一个作业。 em>

您还可以使用--job 标志来指定作业ID。将 job-id 替换为您要查看其日志的作业的 ID。

gh run view --job job-id --log

您可以使用grep 搜索日志。例如,此命令将返回所有包含单词 error 的日志条目。

gh run view --job job-id --log | grep error

要过滤任何失败步骤的日志,请使用--log-failed 而不是--log

gh run view --job job-id --log-failed

请注意,您可以获得workflow run id from the Github API as well。


因此,由于您应该已经拥有工作流文件中的 job_id,因此可以通过 API 使用 dispatch_event 启动工作流,然后从工作流运行列表 API 中获取工作流 run_id好吧,然后在循环中使用 Github CLI 命令来获取日志。

它并不漂亮,但它应该可以将所有这些步骤收集到一个脚本中作为一种解决方法。

【讨论】:

但这只会让我触发工作流程。这已经可以通过 cli 和 api 实现。我想要的是工作流的输出,在 cli 中。 好的,我已经更新了答案。如果您知道工作流程run_id,您实际上也可以使用 Github CLI。您可以从 API 中获取。 是的,但这不会与工作流程的进度同步 加上工作流的任何调用(通过 cli 或其余 api 不返回作业 ID) 您还没有工作流文件中的job_id 吗?我知道可以通过 API 使用 dispatch_event 启动工作流,然后从工作流运行列表 API 中获取工作流 run_id,并在循环中使用 Github CLI 命令来获取日志(它不漂亮,但它应该可以在脚本中收集所有这些步骤)。

以上是关于在 CLI 中观看 GH Actions 工作流输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何在离子模拟器中观看 console.logs?

在运行 XNA 游戏时在 Visual Studio 中观看控制台输出面板

在 QWebEngineView 中观看视频时无法使用全屏

如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移

在 Phonegap / Sencha 中观看 YouTube 的最佳实践

在 .NET 进程中观看由本机进程创建的全局事件