如何通过GitHub GraphQL API获取最新的GitHub Actions工作流运行记录?
解决方案:用GitHub GraphQL API直接获取指定分支触发的最新工作流ID
可行,你可以通过GitHub GraphQL API的Repository.workflows关联到Workflow.workflowRuns来实现,不需要混合REST API,也不依赖拉取请求。
核心查询思路
GitHub GraphQL的Repository对象虽然没有直接的workflow_runs字段,但可以先定位到目标工作流(通过工作流名称或文件路径),再通过该工作流的workflowRuns字段筛选特定分支的运行记录,按创建时间倒序取第一条,就能拿到刚触发的工作流ID。
示例查询
query GetLatestWorkflowRunId { repository(owner: "你的用户名", name: "仓库名") { workflows(first: 1, query: "工作流文件名或名称") { nodes { id name workflowRuns( first: 1 branchName: "目标分支名" orderBy: {field: CREATED_AT, direction: DESC} # 可选:缩小时间范围,避免同分支旧运行干扰 # createdAt: {since: "2024-05-20T00:00:00Z"} ) { nodes { id createdAt status } } } } } }
关键参数说明
query: 用于定位目标工作流,可传入工作流文件路径(比如.github/workflows/deploy.yml)或工作流名称branchName: 指定你触发工作流的分支orderBy: 按创建时间倒序排列,确保第一条就是最新触发的运行- 可选的
createdAt筛选:如果同一分支短时间内有多次触发,可以设置since为触发API的时间前后,进一步缩小范围
权限要求
你的访问令牌需要具备repo:status或完整repo权限(私有仓库),公共仓库需要public_repo权限。
内容的提问来源于stack exchange,提问作者burnettk
相关产品推荐
相关产品推荐

