如何通过VSTS发布管道部署Azure存储中的cspkg至经典云服务并模拟升级
如何将Azure存储中的cspkg部署到Azure经典云服务(含版本升级模拟流程)
我来帮你梳理用Azure PowerShell完成这个部署和升级模拟的完整流程——刚好我之前做过类似的经典云服务版本升级验证,步骤拆解得很清楚,你跟着来就行:
一、前期准备工作
- 确保你已经安装了Azure PowerShell模块(推荐用Az模块里的
Az.CloudService系列命令,它兼容经典云服务操作,比老的AzureRM模块更靠谱) - 拥有目标Azure存储账户的读取权限,以及目标经典云服务的部署权限
- 提前把这些信息记下来,省得中途找:
- 存储账户名称、Blob容器名称,还有PROD版本、TEST新版本的cspkg和cscfg文件的Blob路径
- 测试升级用的经典云服务名称、它所在的资源组名,以及要部署的槽位(建议先用Staging槽位测试,再碰Production)
二、步骤1:把PROD版本部署到测试升级云服务
首先得连到你的Azure账号,然后给存储里的cspkg/cscfg生成临时可访问的SAS链接(部署时Azure需要能拿到这些文件),最后执行部署命令。
- 登录Azure账号:
Connect-AzAccount # 要是你有多个订阅,加上 -Subscription <你的订阅ID> 指定目标订阅
- 生成PROD版本文件的SAS链接(有效期设1小时足够部署了):
# 替换成你的实际信息 $storageAccountName = "你的存储账户名" $containerName = "Blob容器名" $prodCspkgBlobPath = "prod版本的cspkg路径,比如prod-v1.0.cspkg" $prodCscfgBlobPath = "prod版本的cscfg路径,比如prod-v1.0.cscfg" # 获取存储账户上下文 $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount # 生成只读权限的SAS令牌,有效期1小时 $sasTokenCspkg = New-AzStorageBlobSASToken -Container $containerName -Blob $prodCspkgBlobPath -Context $storageContext -Permission r -ExpiryTime (Get-Date).AddHours(1) $sasTokenCscfg = New-AzStorageBlobSASToken -Container $containerName -Blob $prodCscfgBlobPath -Context $storageContext -Permission r -ExpiryTime (Get-Date).AddHours(1) # 拼接成Azure能直接访问的完整URL $prodCspkgUrl = "https://$storageAccountName.blob.core.windows.net/$containerName/$prodCspkgBlobPath$sasTokenCspkg" $prodCscfgUrl = "https://$storageAccountName.blob.core.windows.net/$containerName/$prodCscfgBlobPath$sasTokenCscfg"
- 部署PROD版本到测试云服务的Staging槽位:
# 替换成你的实际信息 $cloudServiceName = "你的测试升级云服务名" $resourceGroupName = "云服务所在的资源组名" $slot = "Staging" # 要是云服务还没部署过,用这个命令 New-AzCloudServiceDeployment -ResourceGroupName $resourceGroupName -CloudServiceName $cloudServiceName -Slot $slot -PackageUrl $prodCspkgUrl -ConfigurationUrl $prodCscfgUrl -Force # 要是Staging槽位已经有旧部署,用这个命令更新 Set-AzCloudServiceDeployment -ResourceGroupName $resourceGroupName -CloudServiceName $cloudServiceName -Slot $slot -PackageUrl $prodCspkgUrl -ConfigurationUrl $prodCscfgUrl -Force
部署完后,你可以访问Staging槽位的专属URL,验证PROD版本是不是正常运行。
三、步骤2:部署TEST新版本到测试升级云服务(模拟升级)
流程和上面差不多,只是把文件换成TEST版本的就行:
- 获取TEST版本文件的SAS链接:
# 替换成TEST版本的文件路径 $testCspkgBlobPath = "test版本的cspkg路径,比如test-v2.0.cspkg" $testCscfgBlobPath = "test版本的cscfg路径,比如test-v2.0.cscfg" $sasTokenTestCspkg = New-AzStorageBlobSASToken -Container $containerName -Blob $testCspkgBlobPath -Context $storageContext -Permission r -ExpiryTime (Get-Date).AddHours(1) $sasTokenTestCscfg = New-AzStorageBlobSASToken -Container $containerName -Blob $testCscfgBlobPath -Context $storageContext -Permission r -ExpiryTime (Get-Date).AddHours(1) $testCspkgUrl = "https://$storageAccountName.blob.core.windows.net/$containerName/$testCspkgBlobPath$sasTokenTestCspkg" $testCscfgUrl = "https://$storageAccountName.blob.core.windows.net/$containerName/$testCscfgBlobPath$sasTokenTestCscfg"
- 更新Staging槽位的部署:
Set-AzCloudServiceDeployment -ResourceGroupName $resourceGroupName -CloudServiceName $cloudServiceName -Slot $slot -PackageUrl $testCspkgUrl -ConfigurationUrl $testCscfgUrl -Force
- 验证升级后的应用:
部署完成后,再次访问Staging槽位的URL,检查应用功能是否正常。要是没问题,还可以把Staging和Production槽位互换(模拟正式环境的升级流程):
Switch-AzCloudServiceSlot -ResourceGroupName $resourceGroupName -CloudServiceName $cloudServiceName -Force
四、一些实用提醒
- 一定要确保cscfg文件的配置和目标云服务匹配,比如角色实例数、端点配置这些,别部署完才发现不兼容
- SAS令牌的有效期别设太短,不然部署到一半链接失效就麻烦了
- 要是在VSTS发布管道里用这些脚本,直接加个Azure PowerShell任务就行,还能把存储账户名、云服务名这些做成管道变量,维护起来更方便
- 部署过程中可以用这个命令查看进度和状态:
Get-AzCloudServiceDeployment -ResourceGroupName $resourceGroupName -CloudServiceName $cloudServiceName -Slot $slot
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

