1. 准备工作区:立刻打开两个DMS两个OSP 2. 识别:识别有故障的范围,是版本还是Ring。在OSP检查此Ring趋势图。检查Substrate版本历史,确认其版本类型(Dogfood、Daily)。 3. 检查Override:在OSP Overrides页面搜索这个范围的信息,检查是否被Halt,以及相关Override的修改时间。检查相关Incident 如果有相关Override,找到正确责任组。结束 如果没有相关Override,转到步骤4 4. 进一步识别+验证:在DMS里使用gcam命令检查这个版本是否真的没有被部署。 ```powershell $machines | Where-Object { $_.DesiredMachineDefinition -eq 'BE' } | Group-Object ActualVersion | Sort-Object { $_.Name } $machines | Where-Object { $_.DesiredMachineDefinition -eq 'FE' } | Group-Object ActualVersion | Sort-Object { $_.Name } $machines | Where-Object { $_.DesiredMachineDefinition -eq 'AD' } | Group-Object ActualVersion | Sort-Object { $_.Name } ``` 在这一步: 确定不能部署的机器的Role 5. 检查期待性:在DMS里将机器按DesiredVersion Group,检查是否有机器试图部署这个版本。 ```powershell $machines | Where-Object { $_.DesiredMachineDefinition -eq 'BE' } | Group-Object DesiredVersion | Sort-Object { $_.Name } ``` 如果有机器,证明机器正在Deploy但是失败了,前往步骤6。 如果没有机器,证明机器根本就没打算部署这个版本,前往步骤9。 6. 检查机器错误情况。抽样几台。检查其最近Workitem,观察错误 7. 使用Dots App交叉验证6。找到除了无法BeginMM以外最多的错误。 8. 找到错误的信息,检查日志,找到正确的责任人。 (注意:CAMgt3 的机器天生不跑 FastTrain,只装 Dogfood,就不再管了,而且只有Reimage能成功) 结束 9. 如果整个Ring都有这个问题,则在Email中搜索Ringbot相关的告警,检查是否Ringbot工作异常:(TODO:这里要讨论并非整个Ring有问题的情况) 如果有,检查Ringbot的异常:Get-ScheduledWorkflow ringbot* | ft name, lastoperationid, isenabled 或 Invoke-RingbotValidateProdRings.ps1 如果没有,继续 10. 打开OSP的Ring Promo信息,观察是否这个版本被Promo 如果有Ring Promo,检查其欠缺的条件。如果有欠缺,则诊断欠缺的条件。如果全部满足,前往步骤14。 如果没有Ring Promo,转到步骤11 11. 使用DMS See-Version,检查相关的deployment config workitem, deployment config version, deployment config approved version, config prerequisite versions是否完整 12. 检查其前一个Ring有没有 config version 创建出来 如果有,转到步骤14 如果没有,转到步骤13 13. 考虑手工创建前一个Ring的Config Version,然后手工创建当前 Ring的 Config Workitem ```powershell Get-DeploymentConfigWorkItem -DeployRing MSIT -ApprovedVersion 15.20.7091.005 | ft -a ``` For: DeploymentEngine, SeedComponents, Saturation, BuildComponentList, PrepareAD, SeedPavcComponents, WorkflowPairing New-DeploymentConfigWorkItem -DeployRing MSIT -ApprovedVersion 15.20.7091.005 -ServerRole BE -HandlerType DeploymentEngine -DeploymentTrainType RegularTrain 然后等待大约20分钟,重新执行此检查单 14. 检查相关的Deployment Config Workitem 是否执行完整 ```powershell Get-DeploymentConfigWorkItem -DeployRing MSIT -ApprovedVersion 15.20.7091.005 | ft -a ``` 15. 找到几台示例机器,检查APSPrioritizerLog,观察Message得知为何机器明明可以Deploy这个版本却为何不Deploy这个版本 在完成检查单后,使用下面的命令以检查是否有机器开始部署了: ```powershell $msitUpgradingBe = gcam -ShowAll -Filter "DeployRing -eq 'MSIT' -and DesiredMachineDefinition -eq 'BE' -and DesiredVersion -like '15.20.7091.*' -and AutopilotMode -eq 'ApClient'" ```