关于 running-devops-test-suite
用于启动 DevOps Center 测试套件,并在符合条件时重新触发受阻的质量门禁。执行前需确认管道上下文并取得用户明确批准,之后将运行 ID 交给轮询技能。
主要功能
- 01验证管道和阶段输入
- 02执行前要求用户批准
- 03支持重新触发质量门禁
- 04将运行 ID 交给轮询技能
- 05按状态提供错误说明
适用场景
- 01启动已确认管道阶段的测试
- 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>
请求正文架构
| 字段 | 类型 | 描述 |
|---|---|---|
stageId | string | 要在其上执行测试的流水线阶段 ID |
event | string | Pre-Promote、Post-Promote 或 Review |
testSuiteIds | string[] | 一个或多个要执行的测试套件 ID |
成功时
从响应中提取 runId(或执行 ID)。告知用户:
“测试正在
<doce-org-alias>中运行。结果就绪后,我会通知你。”
立即将 runId 交给 polling-test-results 技能,开始轮询循环。
出错时
| 状态 | 给用户的消息 |
|---|---|
| 400 | “测试执行请求无效。请检查阶段和套件 ID 是否正确。” |
| 403 | “你没有权限在此流水线上运行测试。请检查你的 DevOps Testing API 访问权限。” |
| 404 | “未找到该流水线或阶段。它可能已被删除。” |
| 500 | “DevOps Center 组织返回了服务器错误。请几分钟后重试。” |
绝不要向用户暴露原始 API 错误。
重新触发模式(重新运行质量门禁)
当质量门禁失败导致晋级受阻,且覆盖率缺口此后已得到解决时,使用此模式。
额外前提条件 — 继续前必须全部满足
- 最新
DevopsTestSuiteExecution上的Coverage字段达到或超过DevopsQualityGateRule中定义的阈值 - 用户已明确要求重新触发门禁
- 已知受阻晋级中的相同
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— 配置新的质量门禁或阈值