问题描述
在使用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的信息。