与 ServiceNow 变更管理集成

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines 支持与 ServiceNow 集成,以改善开发团队和 IT 团队之间的协作。 通过在发布管道中包含变更管理,团队可以降低与变更相关的风险,并在充分利用 Azure Pipelines 的同时遵循 ITIL 等服务管理方法。

本文将指导如何进行以下操作:

  • 配置 ServiceNow 实例。
  • 包括 ServiceNow 变更管理流程作为发布门限。
  • 从发布管道监视变更管理流程。
  • 使用部署结果使 ServiceNow 更改请求保持更新状态。

先决条件

配置 ServiceNow 实例

  1. 在 ServiceNow 实例上安装 Azure Pipelines 扩展。 需有 Hi 凭据才能完成安装。 有关从 ServiceNow 应用商店安装应用的更多详细信息,请参阅购买概述

  2. 在 ServiceNow 中创建一个新用户并授予其以下角色:x_mioms_azpipeline.pipelinesExecution

    显示如何在 ServiceNow 中设置新用户的屏幕截图。

设置 Azure DevOps 组织

  1. 在 Azure DevOps 组织上安装 ServiceNow 变更管理扩展

    显示 ServiceNow 变更管理扩展的屏幕截图。

  2. 在 Azure DevOps 项目中创建新的 ServiceNow 服务连接,如下所示。 或者,也可以使用 OAuth2 身份验证

    显示如何配置 ServiceNow 服务连接的屏幕截图。

配置发布管道

  1. 导航到你的发布管道,然后选择“部署前条件”图标。 选择“门限”和“ServiceNow 变更管理”部署前门限。

    显示如何添加部署前门限的屏幕截图。

  2. 选择之前创建的服务连接并填写必填字段,如下所示:

    显示如何配置 ServiceNow 变更管理门限的屏幕截图。

    • ServiceNow 连接:连接到用于变更管理的 ServiceNow 实例。
    • 简短说明:更改的摘要。
    • 说明:更改的详细说明。
    • 类别:更改的类别。 示例:硬件、网络、软件。
    • 优先级:更改的优先级。
    • 风险:更改的风险级别。
    • 影响:更改对业务的影响。
    • 配置项:更改所应用到的配置项 (CI)。
    • 分配组:更改所分配到的组。
    • 更改请求的计划:ServiceNow 工作流遵循的更改计划。 日期和时间应采用 UTC 时区,格式应为 yyyy-MM-ddTHH:mm:ssZ。 示例:2018-01-31T07:56:59Z。
    • 其他更改请求参数:名称必须是带有前缀“u_”的字段名称(不是标签)。 示例:u_backout_plan。 值必须是 ServiceNow 中的有效值。 无效条目将被忽略。
    • 更改请求的所需状态:当更改请求状态与提供的值相同时,门限将会成功,管道将会继续。
    • 高级:指定一个表达式来控制此门限在哪种情况下应该成功。 更改请求在 ServiceNow 的响应中定义为 root['result']。 示例 - "and(eq(root['result'].state, 'New'),eq(root['result'].risk, 'Low'))"。 有关更多详细信息,请参阅表达式
    • 输出变量:必须指定一个引用名称才能在部署工作流中使用输出变量。 可以通过使用“PREDEPLOYGATE”作为无代理作业中的“前缀”来访问门限变量。 例如,当引用名称设置为“gate1”时,可如下所示获取更改编号:$(PREDEPLOYGATE.gate1.CHANGE_REQUEST_NUMBER)。
    • CHANGE_REQUEST_NUMBER:更改请求的编号。
    • CHANGE_SYSTEM_ID:更改请求的系统 ID。
  3. 在发布管道的末尾,添加一个无代理作业和一个“更新 ServiceNow 更改请求”任务。

    显示如何配置“更新 ServiceNow 更改请求”任务的屏幕截图。

  • ServiceNow 连接:连接到用于变更管理的 ServiceNow 实例。
  • 更改请求编号:要更新的更改请求的编号。
  • 更改请求的更新状态:为更改请求设置的状态。 如果选择了“更新状态”,则可以使用此输入。
  • 关闭代码和关闭注释:返回状态。

注意

如果在执行期间未更新任何更改请求字段,则“更新 ServiceNow 更改请求”任务将会失败。 ServiceNow 将忽略传递给该任务的无效字段和值。

创建发布管道

  1. 选择“创建发布”以启动新的发布管道。

  2. 管道应在 ServiceNow 中创建一个新的更改请求,作为之前创建的部署前条件的一部分。

    显示部署前门限执行的屏幕截图。

  3. 管道将等待所有门限在同一采样间隔内成功。 若要检查更改编号,请选择状态图标以查看管道日志。

    显示管道日志的屏幕截图。

  4. 更改请求将在 ServiceNow 中排队,更改所有者可以查看它。

    显示 ServiceNow 中新更改请求的屏幕截图。

  5. 触发了新更改请求的发布管道可以在“Azure DevOps 管道元数据”部分下找到。

    显示发布管道元数据的屏幕截图。

  6. 当更改准备好实现时(已进入“实现”状态),管道将恢复执行,门限状态应返回“成功”。

    显示部署门限状态的屏幕截图。

  7. 更改请求在部署后将自动关闭。

Yaml 管道

本教程假设你有一个 yaml 管道,其中包含单个要部署到“latest”环境的阶段。

添加检查

  1. 导航到“latest”环境,选择省略号按钮,然后选择“审批和检查”。

  2. 选择加号以添加新检查,然后将“ServiceNow 变更管理”检查添加到该环境。 使用与部署前门限相同的配置。

    显示如何添加 ServiceNow 变更管理检查的屏幕截图。

添加 yaml 任务

  1. 将一个服务器作业添加到阶段以更新更改请求。

    显示无代理任务的屏幕截图。

  2. 保存并运行管道。 将自动创建新的更改请求,并且管道将暂停并等待检查完成。

  3. 检查完成后,管道应恢复执行。 更改请求在部署后将自动关闭。

显示管道执行的屏幕截图。

常见问题

问:支持哪些版本的 ServiceNow?

答:我们支持以下版本:Kingston、London、New York、Paris、Quebec、Rome、San Diego 和 Tokyo。

答:我们支持以下版本:Kingston、London、New York、Paris 和 Quebec。

:我们支持以下版本:圣选戈、东京和犹他版本。

问:支持哪些类型的更改请求?

答:此集成支持常规、标准和紧急更改请求。

问:如何设置其他更改属性?

答:可以在“其他更改请求参数”字段中指定其他更改属性。 使用键值对 JSON 格式,其名称为带有前缀 u_ 的字段名称(不是标签)。

问:是否可以使用其他更改请求参数来更新更改请求中的自定义字段?

答:如果在更改请求中定义了自定义字段,则必须为导入集转换映射中的自定义字段添加映射

问:我看不到为“类别”、“状态”和其他字段填充的下拉列表值。 应采取何种操作?

答:要正常使用下拉列表,“变更管理核心和变更管理 - 状态模型”插件必须在 ServiceNow 实例上处于活动状态。 有关更多详细信息,请参阅升级变更管理更新更改请求状态

资源