用途
PR Build Status 用于检索 GitHub Pull Request 对应的 Azure DevOps 构建信息,包括构建 ID、阶段状态、失败作业,以及基于 Helix 的测试控制台日志。它主要面向 dotnet/maui 仓库的 CI/CD 排查需求。
主要能力
- 根据 PR 编号获取构建 ID。
- 获取构建状态,可仅查看失败作业。
- 获取构建错误与测试失败,可分别只查看编译错误或只查看测试失败。
- 获取 Helix 工作项列表及其状态、控制台日志内容,支持按平台、工作项名称过滤,并可指定输出日志行数。
使用方式
该技能使用 bash 搭配 pwsh(PowerShell 7+)运行 PowerShell 脚本,无需文件编辑或其他工具。所有脚本位于 .github/skills/pr-build-status/scripts/。
- 获取 PR 的构建 ID:
pwsh .github/skills/pr-build-status/scripts/Get-PrBuildIds.ps1 -PrNumber <PR_NUMBER>
- 获取构建状态:
pwsh .github/skills/pr-build-status/scripts/Get-BuildInfo.ps1 -BuildId <BUILD_ID>
# 仅失败作业:
pwsh .github/skills/pr-build-status/scripts/Get-BuildInfo.ps1 -BuildId <BUILD_ID> -FailedOnly
- 获取构建错误与测试失败:
# 获取所有错误(构建错误 + 测试失败)
pwsh .github/skills/pr-build-status/scripts/Get-BuildErrors.ps1 -BuildId <BUILD_ID>
# 仅构建/编译错误
pwsh .github/skills/pr-build-status/scripts/Get-BuildErrors.ps1 -BuildId <BUILD_ID> -ErrorsOnly
# 仅测试失败
pwsh .github/skills/pr-build-status/scripts/Get-BuildErrors.ps1 -BuildId <BUILD_ID> -TestsOnly
- 获取 Helix 控制台日志:
# 列出所有 Helix 工作项及其状态
pwsh .github/skills/pr-build-status/scripts/Get-HelixLogs.ps1 -BuildId <BUILD_ID>
# 按平台过滤
pwsh .github/skills/pr-build-status/scripts/Get-HelixLogs.ps1 -BuildId <BUILD_ID> -Platform Windows
# 显示失败工作项的控制台日志内容
pwsh .github/skills/pr-build-status/scripts/Get-HelixLogs.ps1 -BuildId <BUILD_ID> -ShowConsoleLog
# 按工作项名称过滤并显示更多日志行
pwsh .github/skills/pr-build-status/scripts/Get-HelixLogs.ps1 -BuildId <BUILD_ID> -WorkItem "*Lifecycle*" -ShowConsoleLog -TailLines 200
标准构建失败排查流程:先通过 Get-PrBuildIds.ps1 -PrNumber XXXXX 获取构建 ID,再对每个构建运行 Get-BuildInfo.ps1 -BuildId YYYYY -FailedOnly 查看状态,最后对失败构建运行 Get-BuildErrors.ps1 -BuildId YYYYY 获取错误。
Helix 测试失败排查流程:先获取构建 ID,找到包含 Helix 作业的构建(如 maui-pr-devicetests、maui-integration-tests),再运行 Get-HelixLogs.ps1 -BuildId YYYYY -ShowConsoleLog,如需特定平台可附加 -Platform Windows -ShowConsoleLog。
适用场景
- 用户询问某个 PR 的 CI/CD 状态。
- 用户询问失败检查或构建。
- 用户询问“PR #XXXXX 上什么失败了”。
- 用户想查看测试结果。
- 用户询问 Helix 失败(设备测试、集成测试等)。
- 用户需要调试 Helix 基础设施上测试失败的原因。
限制与说明
Helix 是 .NET 工程基础设施,用于跨多平台与设备类型运行测试,包含设备测试(在真实设备/模拟器上运行,覆盖 iOS、Android、Windows、MacCatalyst)、集成测试(在不同 OS 配置上运行)以及其他需要 Helix 基础设施的分布式测试。当 Helix 测试失败时,涉及构建阶段(编译并打包测试应用/harness)、Helix 提交(将工作项发送至 Helix 队列)、工作项执行(Helix 在目标机器/设备上运行测试)与控制台日志(包含测试执行的 stdout/stderr)。
常见 Helix 失败模式包括:控制台日志出现 "XHarness timeout" 表示测试耗时过长被基础设施终止;"No test result files found" 表示测试从未运行或进程崩溃;"error MT..." 或 "error BL..." 表示构建/链接错误(应改查构建日志);退出码非零表示测试失败或基础设施问题。
使用前需具备已认证的 gh(GitHub CLI)与 pwsh(PowerShell 7+)。