mcpField
R
running-devops-test-suite

running-devops-test-suite

github.com/forcedotcom测试与质量1.1k265 次安装1 天前更新
代码仓库

关于 running-devops-test-suite

用于启动 DevOps Center 测试套件,并在符合条件时重新触发受阻的质量门禁。执行前需确认管道上下文并取得用户明确批准,之后将运行 ID 交给轮询技能。

主要功能

  1. 01验证管道和阶段输入
  2. 02执行前要求用户批准
  3. 03支持重新触发质量门禁
  4. 04将运行 ID 交给轮询技能
  5. 05按状态提供错误说明

适用场景

  1. 01启动已确认管道阶段的测试
  2. 02覆盖率达标后重新运行门禁

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill running-devops-test-suite

安装后在 Claude Code 中输入/running-devops-test-suite确认已加载。

详细介绍

运行 DevOps Center 测试套件

先决条件

先加载并遵循 checking-devops-prerequisites — 运行先决条件 1–4 和先决条件 5(流水线阶段),因为此技能针对特定阶段运行。继续之前,需要确认 doce-org-alias、pipelineId 和 stageId。

调用此技能前所需的输入

输入获取方式
pipelineId来自先决条件 4(流水线选择)
stageId来自先决条件 5(流水线阶段确认)
event与用户确认:Pre-Promote 或 Post-Promote(如果上下文是审查环境,则为 Review)
testSuiteIds从套件选择或推荐步骤中确认的套件 ID
doce-org-alias在先决条件 1 中确定

确认门槛

此调用会更改组织状态 — 未获得用户明确确认时不得继续。

调用 API 前,向用户展示:

“我即将使用以下配置运行测试:

  • 流水线:<pipelineName>
  • 阶段:<stageName>
  • 事件:<event>
  • 套件:<suiteName(s)>
  • 组织:<doce-org-alias>

是否继续?”

用户确认前,不得调用 API。

API 调用

sf api request rest \
  "/services/data/v67.0/connect/devopstesting/pipeline/<pipelineId>/stage/execute" \
  --method POST \
  --body '{
    "stageId": "<stageId>",
    "event": "<event>",
    "testSuiteIds": ["<suiteId1>", "<suiteId2>"]
  }' \
  --target-org <doce-org-alias>
请求正文架构
字段类型描述
stageIdstring要在其上执行测试的流水线阶段 ID
eventstringPre-Promote、Post-Promote 或 Review
testSuiteIdsstring[]一个或多个要执行的测试套件 ID

成功时

从响应中提取 runId(或执行 ID)。告知用户:

“测试正在 <doce-org-alias> 中运行。结果就绪后,我会通知你。”

立即将 runId 交给 polling-test-results 技能,开始轮询循环。

出错时

状态给用户的消息
400“测试执行请求无效。请检查阶段和套件 ID 是否正确。”
403“你没有权限在此流水线上运行测试。请检查你的 DevOps Testing API 访问权限。”
404“未找到该流水线或阶段。它可能已被删除。”
500“DevOps Center 组织返回了服务器错误。请几分钟后重试。”

绝不要向用户暴露原始 API 错误。


重新触发模式(重新运行质量门禁)

当质量门禁失败导致晋级受阻,且覆盖率缺口此后已得到解决时,使用此模式。

额外前提条件 — 继续前必须全部满足
  1. 最新 DevopsTestSuiteExecution 上的 Coverage 字段达到或超过 DevopsQualityGateRule 中定义的阈值
  2. 用户已明确要求重新触发门禁
  3. 已知受阻晋级中的相同 pipelineId、stageId 和 event

如果覆盖率仍低于阈值,不要重新触发。请改为回复:

“覆盖率仍为 <X>%,低于 <threshold>% 的门禁要求。达到阈值前无法重新触发门禁。以下是仍未覆盖的方法:<list>。”

不要重试。说明需要先解决什么问题,然后停止。

重新触发所需的输入
输入来源
pipelineId来自受阻晋级的上下文
stageId来自受阻晋级的上下文
event最初导致受阻的相同事件类型(Pre-Promote 或 Post-Promote)
suiteIds最初运行的相同套件
doce-org-alias在先决条件 1 中确定
确认门槛(重新触发)

执行 API 调用前,展示以下确认提示并等待用户明确批准:

“已确认覆盖率为 <X>%,达到 <threshold>% 的门禁要求。我将为 <stageName> 阶段重新触发质量门禁检查(<event>)。确认吗?”

仅在用户确认后继续。如果用户拒绝,则停止,不得调用任何 API。

API 调用(重新触发)

使用相同的 Connect API 阶段/执行端点:

sf api request rest "/services/data/v67.0/connect/devopstesting/pipeline/<pipelineId>/stage/execute" --method POST --body '{"stageId":"<stageId>","event":"<event>","testSuiteIds":["<suiteId1>"]}' --target-org <doce-org-alias>

调用返回 runId 后,将任务交接给 polling-test-results 技能,并传入新的 runId 以监控执行结果。

错误处理(重新触发)

如果 API 返回错误,表明无法重新触发质量门禁,请回复:

“目前无法重新触发质量门禁。原因:<plain-language summary>。请先解决以下问题:<list>。”

切勿向用户披露原始 API 错误详情。


相关技能

  • polling-test-results — 收到 runId 后,轮询异步运行结果
  • recommending-devops-tests — 触发执行前,建议优先运行哪些套件
  • managing-suite-assignments — 如果套件尚未关联到流水线阶段,则为其分配阶段或建立映射
  • configuring-quality-gate — 配置新的质量门禁或阈值

评论

支持 Markdown