部署门限概念
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Pipelines 中的部署门限已添加到发布管道,以确保部署在继续之前满足特定条件。 门限对于通过强制实施严格的检查来确保部署可靠且安全至关重要,从而发布更稳定、更安全的软件。
门限在发布阶段的预部署和部署后条件中定义。 它们提供一种机制,用于从外部服务(如 Azure 函数或 REST API)自动收集运行状况信号,以基于这些信号控制发布升级。 门限与审批部门合作,确保适当的利益干系人批准发布,并且发布符合必要的质量和合规性标准。
用例
部署入口的一些常见用例包括:
- 事件管理:在继续部署之前,请确保满足某些条件。 例如,确保只有在不存在优先级零错误时才进行部署。
- 寻求审批:与 Microsoft Teams 或 Slack 集成,以通知外部用户(如审核员)或 IT 经理部署并等待审批。
- 质量验证:查询管道指标(如通过率或代码覆盖率),并且仅在它们处于预定义阈值内时才进行部署。
- 安全扫描:执行项目扫描、代码签名和策略检查等安全检查。 部署门限可能会启动扫描并等待扫描完成,或仅检查是否完成。
- 与基线相关的用户体验:使用产品数据收集来确保用户体验从基线状态回归。 部署前的用户体验指标可用作基线。
- 更改管理:等待 ServiceNow 等系统中的更改管理过程完成,然后再继续部署。
- 基础结构运行状况:在部署后根据符合性规则执行监视和验证基础结构,或等待正常的资源利用率和积极的安全报告。
大多数健康参数会随时间变化,经常在健康和不健康之间变化,然后恢复健康。 为了考虑到这种变化,所有入口都会定期重新评估,直到所有这些入口同时成功。 如果在配置超时前,所有门限都未在相同的时间间隔内成功,则不会继续进行发布执行和部署。
为阶段定义门限
可以在阶段开始时(预部署条件)启用门限和/或阶段结束时(部署后条件)启用门限。 有关详细信息,请参阅设置门限。
评估前延迟是门限评估过程开始时的时间延迟,它允许门限初始化、稳定并开始为当前部署提供准确的结果。 有关详细信息,请参阅门限评估流。
- 对于部署前门限,延迟是针对所部署项目记录所有 bug 所需的时间。
- 对于 部署后入口,延迟将是已部署应用达到稳定操作状态所花费的最长时间、部署阶段执行所有所需测试所需的时间,以及部署后记录事件所需的时间。
默认情况下,以下入口可用:
- 调用 Azure 函数:触发 Azure 函数的执行并确保成功完成。 有关详细信息,请参阅 Azure 函数任务。
- 查询 Azure Monitor 警报:观察为活动警报配置的 Azure Monitor 警报规则。 有关详细信息,请参阅 Azure Monitor 任务。
- 调用 REST API:调用 REST API,并在返回成功响应时继续。 有关详细信息,请参阅 调用 REST API 任务。
- 查询工作项:确保从查询返回的匹配工作项数在阈值内。 有关详细信息,请参阅 查询工作项任务。
- 检查 Azure Policy 符合性:评估给定订阅和资源组范围内的资源的 Azure Policy 符合性,并且可以选择在特定资源级别进行评估。 有关详细信息,请参阅检查 Azure Policy 合规性任务。
还使用市场扩展创建自己的门。
适用于所有入口的评估选项包括:
- 门限重新评估之间的时间。 门限的连续评估之间的时间间隔。 在每个采样间隔内,将同时向每个入口发送新请求,并评估新结果。 建议采样间隔应大于配置好的闸门的最长常规响应时间,以确保有足够的时间接收到所有响应并进行评估。
- 在此之后门限将失败的超时。 所有门限的最长评估期。 如果在同一采样间隔内所有门限都成功之前已达到超时时间,则部署将被拒绝。
- 门限和审批。 如果同时配置了门限和审批,请选择所需的执行顺序。 对于预部署条件,默认的顺序是先提示进行手动(用户)审批,然后评估门限;如果用户拒绝发布,系统就不需要继续评估门限功能。 对于部署后条件,默认情况是仅在所有门限都成功时评估门限并提示手动审批,以确保审批人拥有批准发布所需的所有信息。
有关门限分析的详细信息,请参阅查看审批日志和监视和跟踪部署。
门限评估流示例
下图演示了入口评估流,其中,在初始稳定延迟期和三个采样间隔之后,部署获得批准。
下图演示了门限评估流,其中,在初始稳定延迟期之后,并非所有门限都在每个采样间隔内取得成功。 在这种情况下,超时期限到期后,部署将被拒绝。