You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps配置预部署门控校验ServiceNow计划时间触发发布

Azure DevOps发布管道预部署门控:校验ServiceNow变更计划时间搭建思路

核心思路

通过自定义PowerShell脚本调用ServiceNow API获取变更请求的计划时间,与当前时间做对比,以此作为预部署门控的校验逻辑,配合Azure DevOps门控的重试机制实现自动等待计划时间到达后执行发布。

具体步骤

  • 确认前置条件
    确保已配置的ServiceNow服务连接具备读取变更请求(Change Request)的权限,能访问planned_start_date(或对应计划时间字段)。同时,在发布管道中定义变量(如SN_ChangeRequest_Number)用于传递目标变更请求编号。

  • 配置预部署门控
    进入发布管道目标阶段的「预部署条件」,勾选「启用门控」,添加「PowerShell脚本」任务作为门控校验任务。

  • 编写时间校验PowerShell脚本
    脚本需完成以下操作:

    1. 读取变更请求编号变量;
    2. 通过ServiceNow REST API获取对应变更的计划时间;
    3. 转换时间格式并与当前时间(建议统一用UTC避免时区问题)对比;
    4. 根据对比结果返回成功/失败状态,控制门控是否通过。

    示例脚本:

    # 读取管道变量中的变更请求编号
    $changeRequestNumber = "$(SN_ChangeRequest_Number)"
    
    # 构造ServiceNow API请求头(凭据通过Azure DevOps服务连接自动注入)
    $headers = @{
        "Authorization" = "Basic $(System.AccessToken)"
        "Accept" = "application/json"
    }
    
    # 调用ServiceNow API获取计划时间字段
    $apiEndpoint = "https://your-servicenow-instance.service-now.com/api/now/table/change_request?sysparm_query=number=$changeRequestNumber&sysparm_fields=planned_start_date"
    $apiResponse = Invoke-RestMethod -Uri $apiEndpoint -Headers $headers -Method Get
    
    # 转换时间格式并统一为UTC时区
    $plannedStartTime = [DateTime]::Parse($apiResponse.result.planned_start_date).ToUniversalTime()
    $currentUtcTime = [DateTime]::UtcNow
    
    # 时间对比逻辑
    if ($currentUtcTime -ge $plannedStartTime) {
        Write-Host "校验通过:当前UTC时间($currentUtcTime) >= 计划UTC时间($plannedStartTime)"
        exit 0
    } else {
        Write-Error "校验不通过:当前UTC时间($currentUtcTime) < 计划UTC时间($plannedStartTime)"
        exit 1
    }
    
  • 设置门控重试规则
    在门控设置中配置重试间隔(如5分钟)和最大重试次数,让管道能自动周期性校验,直到时间条件满足或达到重试上限。

  • 关联变更请求与发布触发
    可通过两种方式传递变更编号:

    • 手动触发发布时,将变更请求编号作为参数输入;
    • 配置ServiceNow与Azure DevOps的集成,当变更请求满足特定状态(如已批准)时自动触发发布,并传递变更编号至管道变量。
  • 测试验证
    创建测试变更请求,分别设置计划时间为「未来10分钟」和「过去时间」,触发发布管道,验证门控是否按预期等待或直接通过。

内容的提问来源于stack exchange,提问作者Enig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:06:10