如何使用`gh`命令行找到失败的步骤

111次阅读
没有评论

问题描述

在使用Github Actions时,有一个需求是希望能够找到包含失败步骤的最近运行的工作流。他知道gh支持使用--json--jq参数以JSON格式输出数据,并应用jq过滤器,但他不知道如何获取有关单个步骤的信息。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用gh命令行工具,可以通过以下步骤找到包含失败步骤的最近运行的工作流:
1. 打开终端或命令行界面。
2. 运行以下命令获取最近运行的工作流列表:

gh run list --json | jq '.workflow_runs[] | select(.conclusion != "success")'

这个命令使用gh run list获取最近运行的工作流列表,并使用jq过滤器选择包含失败步骤的工作流。select(.conclusion != "success")过滤器用于选择conclusion字段不等于”success”的工作流,即包含失败步骤的工作流。
3. 根据需要,可以进一步使用jq过滤器来获取有关单个步骤的信息。例如,要获取每个工作流的步骤列表,可以运行以下命令:

gh run list --json | jq '.workflow_runs[] | select(.conclusion != "success") | .steps'

这个命令在上一步的基础上使用.steps过滤器来获取每个工作流的步骤列表。

方案2

如果gh命令行工具无法满足你的需求,你可以考虑使用Github API来获取有关工作流和步骤的信息。
以下是使用Github API获取包含失败步骤的最近运行的工作流的步骤列表的步骤:
1. 打开终端或命令行界面。
2. 运行以下命令获取Github Personal Access Token(PAT):

gh auth login

这个命令将引导你通过Github身份验证,并生成一个PAT,用于访问Github API。
3. 运行以下命令获取最近运行的工作流列表:

curl -H "Authorization: Bearer YOUR_PAT" "https://api.github.com/repos/OWNER/REPO/actions/runs?per_page=100" | jq '.workflow_runs[] | select(.conclusion != "success")'

YOUR_PAT替换为你在上一步中生成的PAT,OWNER替换为你的Github用户名,REPO替换为你的仓库名称。这个命令使用curl命令和Github API来获取最近运行的工作流列表,并使用jq过滤器选择包含失败步骤的工作流。
4. 根据需要,可以进一步使用jq过滤器来获取有关单个步骤的信息。例如,要获取每个工作流的步骤列表,可以运行以下命令:

curl -H "Authorization: Bearer YOUR_PAT" "https://api.github.com/repos/OWNER/REPO/actions/runs?per_page=100" | jq '.workflow_runs[] | select(.conclusion != "success") | .steps'

这个命令在上一步的基础上使用.steps过滤器来获取每个工作流的步骤列表。
请注意,使用Github API需要进行身份验证,并且有一定的访问限制。你可以在Github文档中了解更多关于使用Github API的信息。

正文完