mcpField
U
update-set-management

update-set-management

github.com/happy-technologies-llc云与 DevOps4142 次安装2 天前更新
代码仓库

关于 update-set-management

此 ServiceNow 技能指导开发和测试实例中的更新集管理,适用于负责配置变更与部署准备的管理员和开发者。内容涵盖创建、设为当前集、检查记录、整理变更及迁移前验证。

主要功能

  1. 01创建并命名更新集
  2. 02设置当前更新集
  3. 03检查已捕获的记录
  4. 04在更新集间移动记录
  5. 05完成及验证部署准备

适用场景

  1. 01按功能隔离配置变更
  2. 02查找误入默认集的记录
  3. 03部署前检查更新集内容
  4. 04准备更新集以迁移到其他实例

MCP 相关

通过 SN-Create-Record、SN-Set-Update-Set 和 SN-Inspect-Update-Set 等 MCP 工具创建、设为当前并检查更新集,也可移动记录。

安装

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill update-set-management

安装后在 Claude Code 中输入/update-set-management确认已加载。

详细介绍

更新集管理

概述

更新集是 ServiceNow 配置管理的基础。本技能涵盖:

  • 创建命名规范正确的更新集
  • 设置开发时的当前更新集
  • 跟踪更新集中捕获的内容
  • 在更新集之间移动记录
  • 准备更新集以供部署
  • 迁移前验证更新集

**使用场景:**在 ServiceNow 开发或测试实例中进行配置更改时。

前置条件

  • 角色:admin 或 update_set_admin
  • **访问权限:**sys_update_set 和 sys_update_xml 表
  • **环境:**开发或测试实例(切勿在生产环境中创建更新集)

流程

步骤 1:创建新更新集

按照命名规范创建描述清晰的更新集。

命名规范:

[PROJECT]-[TYPE]-[DESCRIPTION]-[VERSION]

Examples:
- PROJ123-FEAT-NewTicketForm-v1
- HR-FIX-OnboardingWorkflow-v2
- ITSM-ENH-IncidentAutoAssign-v1

使用 MCP:

Tool: SN-Create-Record
Parameters:
  table_name: sys_update_set
  data:
    name: "PROJ123-FEAT-CustomerPortal-v1"
    description: "New customer portal feature including:
      - Custom catalog items
      - Portal widgets
      - Service catalog categories"
    application: [app_sys_id]  # For scoped apps
    state: in progress

使用 REST API:

POST /api/now/table/sys_update_set
Content-Type: application/json

{
  "name": "PROJ123-FEAT-CustomerPortal-v1",
  "description": "New customer portal feature...",
  "state": "in progress"
}
步骤 2:设置为当前更新集

激活新更新集,以便捕获更改。

使用 MCP(自动化!):

Tool: SN-Set-Update-Set
Parameters:
  update_set_sys_id: [sys_id from step 1]

验证:

Tool: SN-Get-Current-Update-Set

预期响应:

{
  "name": "PROJ123-FEAT-CustomerPortal-v1",
  "sys_id": "abc123...",
  "state": "in progress"
}
步骤 3:进行配置更改

现在可以进行配置更改。所有自定义内容都会被捕获:

自动捕获:

  • UI 策略
  • 业务规则
  • 客户端脚本
  • 脚本包含项
  • 表单和列表
  • ACL
  • 属性
  • 计划作业

不会自动捕获:

  • 数据记录(使用 Data Preservers)
  • 用户记录
  • 组成员关系
  • 部分系统属性
步骤 4:监控更新集内容

定期检查捕获的内容。

使用 MCP:

Tool: SN-Inspect-Update-Set
Parameters:
  update_set_sys_id: [your_update_set_sys_id]

或直接查询:

Tool: SN-Query-Table
Parameters:
  table_name: sys_update_xml
  query: update_set=[your_update_set_sys_id]
  fields: name,type,action,sys_created_on
  limit: 100

预期输出:

名称类型操作创建日期
我的业务规则sys_scriptINSERT2026-02-06
事件表单sys_ui_policyINSERT2026-02-06
步骤 5:处理位于错误更新集中的记录

如果记录意外进入 Default 或错误的更新集:

使用 MCP:

Tool: SN-Move-Records-To-Update-Set
Parameters:
  source_update_set: Default  # or sys_id
  target_update_set: [your_update_set_sys_id]
  query: sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()

手动操作:

Tool: SN-Query-Table
Parameters:
  table_name: sys_update_xml
  query: update_set=[wrong_set_sys_id]^sys_created_onONToday
  fields: sys_id,name,type

# Then for each record:
Tool: SN-Update-Record
Parameters:
  table_name: sys_update_xml
  sys_id: [record_sys_id]
  data:
    update_set: [correct_update_set_sys_id]
步骤 6:完成更新集

开发完成后,将更新集标记为已完成:

使用 MCP:

Tool: SN-Update-Record
Parameters:
  table_name: sys_update_set
  sys_id: [your_update_set_sys_id]
  data:
    state: complete
    description: "COMPLETED: [original description]

    Contains:
    - 3 Business Rules
    - 2 UI Policies
    - 1 Script Include
    - 5 Form modifications

    Tested by: [tester name]
    Test date: 2026-02-06"
步骤 7:部署前验证

导出到更高级别的环境之前:

检查问题:

Tool: SN-Query-Table
Parameters:
  table_name: sys_update_xml
  query: update_set=[sys_id]^type=sys_script^actionINinsert,update
  fields: name,payload

验证清单:

  • 没有硬编码的 sys_id
  • 没有硬编码的实例 URL
  • 不包含测试数据
  • 所有脚本都包含错误处理
  • 脚本中没有凭据
  • 已记录依赖项
步骤 8:导出并迁移

导出为 XML: 导航至更新集 → 相关链接 → 导出为 XML

对于远程实例:

  1. 在目标实例上:System Update Sets → Retrieved Update Sets → Import from XML
  2. 预览更新集
  3. 检查冲突
  4. 提交更新集

更新集状态

┌─────────────┐     ┌──────────┐     ┌───────────┐
│ In Progress │────►│ Complete │────►│ Exported  │
│   (build)   │     │ (ready)  │     │ (shipped) │
└─────────────┘     └──────────┘     └───────────┘
                          │
                          ▼
                    ┌──────────┐
                    │ Ignore   │
                    │ (voided) │
                    └──────────┘

工具使用摘要

操作MCP 工具REST 端点
创建SN-Create-RecordPOST /sys_update_set
设置当前项SN-Set-Update-SetCustom API
获取当前项SN-Get-Current-Update-SetGET /sys_user_preference
列出SN-List-Update-SetsGET /sys_update_set
检查SN-Inspect-Update-SetGET /sys_update_xml
移动记录SN-Move-Records-To-Update-SetPATCH /sys_update_xml
克隆SN-Clone-Update-SetPOST /sys_update_set

最佳实践

  • **每个更新集对应一个功能:**不要混合无关更改
  • **名称清晰:**始终遵循命名规范
  • **定期提交:**逐步完成更新集,不要一次性全部完成
  • **提升前先测试:**务必先在较低级别的环境中测试
  • **记录依赖项:**注明是否必须先应用其他更新集
  • **切勿在生产环境中编辑:**始终在开发或测试实例中进行开发

故障排除

记录进入 Default 更新集

**原因:**未设置当前更新集,或当前更新集已被重置 **解决方案:**进行更改前务必确认当前更新集:

Tool: SN-Get-Current-Update-Set
更新集中的记录缺失

**原因:**记录类型未被跟踪,或是在设置更新集之前创建的
解决方案:

  1. 检查是否跟踪了该记录类型(sys_update_set_source)
  2. 使用“添加到更新集”相关链接手动添加
提交时发生冲突

**原因:**同一记录在多个更新集中被修改
解决方案:

  1. 先预览更新集
  2. 仔细检查冲突
  3. 选择保留本地版本或跳过
  4. 记录冲突解决情况
更新集过大

**原因:**单个更新集包含的更改过多
解决方案:

  1. 克隆到新的更新集
  2. 按功能合理拆分
  3. 移除不必要的记录

相关技能

  • admin/deployment-workflow - 完整的部署流程
  • admin/application-scope - 范围应用的最佳实践
  • itsm/change-management - 部署变更流程

参考资料

评论

支持 Markdown