使用GitHub API重新请求检查运行时遇无效check_run_id错误求助
解决Octokit重新请求检查运行时的Invalid check_run_id错误
以下是几个排查和解决方向:
检查检查运行的状态是否允许重新请求
GitHub的Checks API仅允许重新请求处于completed状态(且结论为failed、cancelled或timed_out)的检查运行。如果你取到的第一个检查运行是in_progress或queued状态,调用rerequestRun必然报错。
可以先打印状态确认:console.log('当前检查运行状态:', checkRun.status, '结论:', checkRun.conclusion);优化代码,筛选符合条件的检查运行:
const validCheckRuns = result.data.check_runs.filter(run => run.status === 'completed' && ['failed', 'cancelled', 'timed_out'].includes(run.conclusion) ); if (validCheckRuns.length > 0) { await octokit.checks.rerequestRun({ owner: organization.providerLogin, repo: repository.name, check_run_id: validCheckRuns[0].id, }); } else { console.error('没有可重新请求的检查运行'); }确认check_run_id的类型正确性
部分场景下API返回的checkRun.id可能是字符串类型,而rerequestRun要求传入数字类型ID。尝试强制转换:await octokit.checks.rerequestRun({ owner: organization.providerLogin, repo: repository.name, check_run_id: Number(checkRun.id), });验证权限与上下文一致性
- 确保Octokit使用的Token拥有
checks:write权限,权限不足时可能返回不准确的错误提示。 - 确认
owner和repo参数与调用listForRef时完全一致,避免跨仓库操作导致ID无效。
- 确保Octokit使用的Token拥有
检查检查运行的归属
如果目标检查运行是由其他GitHub App或第三方服务创建的,你的应用没有权限重新请求它。需确保操作的检查运行是当前应用创建的,或拥有对应的跨应用权限。
内容的提问来源于stack exchange,提问作者acoudouy
相关产品推荐
相关产品推荐

