mcpField
C
checking-devops-prerequisites

checking-devops-prerequisites

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

关于 checking-devops-prerequisites

用于 Salesforce DevOps Center 测试工作流的前置检查技能。它会在相关技能继续操作前验证登录状态、Agentforce DX 插件和流水线可用性。

主要功能

  1. 01检查 Salesforce org 登录
  2. 02验证 Agentforce DX 插件
  3. 03确认 DevOps Center 身份验证
  4. 04查找并选择流水线
  5. 05按需解析阶段

适用场景

  1. 01在 DevOps 测试前检查环境
  2. 02为测试技能确定流水线

安装

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

$npx skills add https://github.com/forcedotcom/sf-skills --skill checking-devops-prerequisites

安装后在 Claude Code 中输入/checking-devops-prerequisites确认已加载。

详细介绍

检查 DevOps 前提条件

所有 DevOps Center 测试技能共用的检查关卡。任何查询或系统调用之前都要运行这些检查。如有任何检查失败,请用通俗易懂的语言说明原因,并暂停操作,直到用户解决问题——切勿在环境未经验证时执行写入操作。

**API 版本:**所有 DevOps 测试系统调用均使用 Salesforce API v67.0(最低要求)。

**重要:**所有 DevOps Center 数据(管道、阶段、测试套件、执行记录)都存储在 Salesforce 组织中,而非本地代码库中。切勿在文件系统中搜索管道配置。始终使用 sf data query 或 sf api request rest 查询组织。

其他技能如何使用此技能

每个 DevOps 测试技能都会先加载此技能,并按顺序运行前提条件 1–4。只有当调用技能针对特定管道阶段进行操作时(运行/重新触发测试套件、同步、配置关卡、映射测试套件),才运行前提条件 5(阶段)。调用技能会将解析出的 doce-org-alias、pipelineId,以及(如适用)stageId 传回,以供其自身命令使用。

无需询问用户即可解析DevOps Center 组织别名,除非确实无法确定:

  1. 如果用户在消息中指定了组织别名,则使用该别名。
  2. 否则,使用默认组织(sf org display --json,不带 --target-org)。
  3. 仅当默认组织没有 DevopsPipeline 记录(前提条件 4 失败)时,才询问:“哪个组织别名是你的 DevOps Center 组织?”

前提条件 1 — Salesforce 组织:已登录

sf org list --json

检查 result.nonScratchOrgs、result.scratchOrgs 或 result.sandboxes 中是否至少有一项的 "connectedStatus": "Connected"。

  • **通过:**至少有一个组织处于 Connected 状态
  • **失败:**未列出任何组织,或所有组织均处于非连接状态

失败时:“未找到已通过身份验证的 Salesforce 组织。请在终端运行 sf org login web --alias <your-alias>,然后再回来。”


前提条件 2 — 已安装 Agentforce DX 插件

sf plugins --json

检查是否有 name 包含 plugin-agent、agentforce 或 einstein(不区分大小写)的插件条目。

  • **通过:**找到插件
  • **失败:**没有匹配的条目

失败时:“尚未安装 Agentforce DX Plugin。请运行 sf plugins install @salesforce/plugin-agent,然后重启 IDE 并重试。”


前提条件 3 — DevOps Center 组织已通过身份验证

sf org display --target-org <doce-org-alias> --json

检查 "connectedStatus" 是否为 "Connected"。

  • **通过:**处于 Connected 状态
  • **失败:**会话已过期或发生错误

失败时:“你的 DevOps Center 组织会话已过期。请运行 sf org login web --alias <doce-org-alias> 重新进行身份验证。”


前提条件 4 — 已确定管道

sf data query \
  --query "SELECT Id, Name, CreatedDate FROM DevopsPipeline ORDER BY Name ASC" \
  --target-org <doce-org-alias> \
  --json
  • **通过(恰好一个):**自动使用——不要询问。
  • **通过(多个):**如果用户已指定管道,则按名称匹配。否则,显示带编号的列表并询问:
    Found <N> pipelines:
    1. <Name>
    2. <Name>
    Which pipeline would you like to work with?
    
  • 失败(没有记录):“未找到 DevOps Center 管道。请先在 DevOps Center 中创建项目和管道,然后再使用 DevOps Testing Skills。”
  • 失败(不支持的对象):“<doce-org-alias> 上似乎未安装 DevOps Center。请确认你连接的是正确的组织。”

前提条件 5 — 已确定管道阶段(有条件运行)

仅当调用技能针对特定阶段进行操作时才运行。

如果用户的消息中已指定阶段(例如“集成”“预发布”“生产”),则直接使用该名称——不要再次询问。查询其 Id:

sf data query \
  --query "SELECT Id, Name FROM DevopsPipelineStage WHERE DevopsPipelineId = '<pipelineId>' AND Name = '<stageName>'" \
  --target-org <doce-org-alias> --json

仅当未提及阶段时,才获取完整列表并询问用户选择哪一个:

sf data query \
  --query "SELECT Id, Name FROM DevopsPipelineStage WHERE DevopsPipelineId = '<pipelineId>' ORDER BY Name ASC" \
  --target-org <doce-org-alias> --json

然后询问:“我们要处理哪个管道阶段?”——不要询问组织别名;阶段会根据名称从管道中解析。

  • **通过:**已确认阶段 Id 和 Name
  • **暂缓:**在调用技能需要阶段之前无需运行

错误处理

错误情况响应
sf org list 完全失败“无法连接到 Salesforce CLI。请确保已安装 sf,且它位于 PATH 中。”
sf org display 返回身份验证错误显示通俗易懂的重新身份验证说明。不要暴露原始错误。
DevopsPipeline 查询失败并返回 5xx“DevOps Center 组织返回了服务器错误。请几分钟后重试。”
任意检查意外抛出异常“检查先决条件时出了点问题。错误:[简要说明]。我们再试一次,或者请手动解决,并在准备就绪后告知我。”

切勿向用户暴露原始 API 错误、堆栈跟踪或 JSON 错误负载。

注意事项

问题解决方法
DevopsPipeline 查询返回空结果目标组织未安装 DevOps Center,或组织别名不正确——请用户确认
不支持 DevopsWorkItem sObject使用 WorkItem(无命名空间)——这是此组织版本的正确 API 名称
Review 触发器位于管道级别,而非阶段级别查询 DevopsPipelineStageTrigger,并设置 TriggerType = 'Review' 和 RelatedRecordId = <pipelineId>
Connect API 的 testSuites 在使用 ?stageId= 时返回空结果使用 ?triggerId=<reviewTriggerId>——stageId 仅适用于阶段级别的触发器
sf plugins 未匹配到 agentforce已安装的插件是 @salesforce/plugin-agent——也要匹配 plugin-agent

评论

支持 Markdown