用途:排查 Materialize 仓库某个 PR 上的 CI 失败,触发场景包括被询问失败的检查、Buildkite 失败或 PR 的 CI 问题。
前置条件:需要安装并完成认证的 gh(GitHub CLI)与 bk(Buildkite CLI)。开始前先用 which gh 和 which bk 确认两者可用;若缺失任一工具,应立即停止并告知用户需要安装配置哪个工具,不要改用 REST API 或其他变通方式。gh 与 bk 的网络请求会被默认沙箱拦截,因此工作流中所有 Bash 命令需使用 dangerouslyDisableSandbox: true。
主要步骤:1)从 $ARGUMENTS 解析 PR 编号,支持纯数字(如 35192)和完整 URL 两种格式。2)用 gh 获取 PR 分支名并定位 Buildkite 构建,例如 gh pr view <PR_NUMBER> --json headRefName --jq .headRefName,或用 gh pr checks <PR_NUMBER> 列出失败检查,从失败行 URL 中提取 pipeline、build 编号与 job ID。3)优先查看构建注解,命令为 bk api /pipelines/<PIPELINE>/builds/<BUILD_NUMBER>/annotations --no-pager,注解含错误摘要、堆栈、已知 flaky 测试链接及主分支历史,可先快速总览。4)注解不足时再取日志,建议按 clippy、lint-and-rustfmt、cargo-test、fast-sql-logic-tests、testdrive 等顺序排查,命令为 bk job log <JOB_ID> -p <PIPELINE> -b <BUILD_NUMBER> --no-timestamps --no-pager,大日志可先 grep 错误,独立任务可并行取日志。5)按 Materialize 特有模式归类失败,如 clippy 代码 lint、check-test-flags 未注册新配置标志、cargo 测试断言变化、testdrive 级联失败(只关注分片首个错误)、SLT 输出错误与连接错误之分。6)按根因而非任务名汇总,区分 PR 引入的问题与既有 flaky 测试。
限制:仅适用于 Materialize 仓库的 PR CI 排查,必须使用 gh 与 bk,且需关闭沙箱执行网络命令;资料未提供其他平台或替代工具的用法。