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

Azure DevOps用AzureSpringCloud@0任务做蓝绿部署后无生产部署问题

这是配置使用逻辑问题,非产品已知缺陷,具体原因和修复方案如下:

根因说明

  1. 你当前的配置要求流水线自动识别staging部署进行发布和切换,但首次执行流水线时没有初始化生产部署基准,导致Set Production动作执行时找不到可切换的原生产部署,最终两个部署的active标记都被置为false。
  2. 应用可正常访问是因为Azure Spring Cloud在无明确生产部署时,会默认将流量路由到所有健康运行的部署实例,所以你可以正常打开页面,但没有固定的流量分发规则。
  3. 流水线识别green为当前生产的信息来自任务本地缓存的历史切换记录,并非从Azure侧拉取的真实active属性,所以会出现和门户、CLI查询结果不一致的情况。

修复步骤

第一步:恢复生产部署状态

先执行CLI命令手动将其中一个部署设置为活跃生产环境,替换命令中占位符为你自己的资源组名称即可:

az spring-cloud app deployment set-active --name blue --app my-project --service my-spring-cloud --resource-group <你的资源组名称>

执行后再次运行az spring-cloud app deployment list即可看到blue的active属性变为true,门户的警告也会消失。

第二步:调整流水线执行规则

你的现有yaml配置本身没有语法错误,后续运行流水线前只要保证当前有至少一个活跃的生产部署,即可正常完成蓝绿切换:

  • 每次运行流水线时,任务会自动将新版本部署到当前非活跃的staging部署槽
  • Set Production动作会自动将staging槽切换为生产,原生产槽自动转为staging,完成蓝绿切换

可选:固定部署名称的配置方案

如果你想要明确指定blue、green两个固定部署槽,避免自动创建部署的状态异常,可以将配置修改为显式指定部署名称:

# 部署到staging槽(假设green为固定staging槽)
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: 'My-Subscription'
    Action: 'Deploy'
    AzureSpringCloud: my-spring-cloud
    AppName: my-project
    DeploymentName: 'green'
    Package: $(Pipeline.Workspace)/my-java-app.jar
    RuntimeVersion: Java_8

# 切换green为生产部署
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: 'My-Subscription'
    Action: 'Set Production'
    AzureSpringCloud: my-spring-cloud
    AppName: my-project
    DeploymentName: 'green'

注意事项

请先确认你的Azure Spring Cloud实例服务层级为标准层或企业层,基础层不支持多部署槽蓝绿部署,也会出现active标记失效的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:57:00