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

若Cucumber UI自动化测试失败,能否通过Azure DevOps回滚QA环境Blob静态UI构建?

可以实现Azure Blob存储中静态UI的自动回滚

针对你遇到的QA环境UI回滚需求,结合Azure DevOps和Blob存储的特性,有几种可靠的实现方式:

方案一:利用Blob存储的版本控制功能

  1. 先开启QA环境Blob容器的版本控制和软删除:
    • 登录Azure门户,找到目标Blob容器,在"数据保护"设置中开启版本保留(比如保留30天)和软删除。
  2. 在Azure DevOps发布流水线的QA部署阶段,添加步骤记录当前Blob的版本信息:
    • 用Azure CLI脚本获取容器内所有Blob的当前版本ID,保存到流水线变量:
      az storage blob list --container-name qa-ui-container --account-name your-storage-account --query "[].{name:name, versionId:versionId}" --output json > blob-versions.json
      
  3. 添加条件触发的回滚阶段:
    • 在发布流水线中新增"QA UI回滚"阶段,设置触发条件为自动化测试任务失败。
    • 在回滚阶段执行Azure CLI脚本,恢复Blob到之前记录的版本:
      # 读取版本信息并逐个恢复Blob
      cat blob-versions.json | jq -r '.[]' | while read -r blob; do
        name=$(echo $blob | jq -r '.name')
        versionId=$(echo $blob | jq -r '.versionId')
        az storage blob restore --container-name qa-ui-container --account-name your-storage-account --name $name --version-id $versionId
      done
      

方案二:版本化存档构建产物

  1. 修改构建流水线,将React构建产物打包为带版本标识的压缩包(比如用Azure DevOps的Build.BuildId作为版本号):
    • 用命令打包:zip -r ui-build-$(Build.BuildId).zip ./build
  2. 将压缩包上传到Blob存储的专用存档容器(比如ui-build-archives):
    • 用Azure文件复制任务,把压缩包上传到存档容器,路径设为$(Build.BuildId)/ui-build-$(Build.BuildId).zip
  3. QA部署阶段,解压对应版本的压缩包到QA静态容器:
    • 下载存档中的压缩包,解压后上传到QA容器覆盖现有文件
  4. 回滚时,指定之前成功的构建ID,重复部署步骤:
    • 在回滚阶段,设置构建ID为上一次通过测试的版本(可通过Azure DevOps API查询历史成功构建),执行解压上传操作覆盖当前QA容器文件

方案三:利用Azure DevOps发布的回滚工件

  1. 在QA发布阶段的部署任务后,添加**"发布工件"**任务,将当前部署的UI构建产物保存为流水线的回滚工件
  2. 当自动化测试失败时,触发回滚阶段,使用**"Azure文件复制"**任务,将回滚工件重新上传到QA的Blob容器,覆盖现有文件
  3. 这种方式依赖Azure DevOps的工件存储,适合短期回滚,若需长期保留版本,建议结合方案二的存档方式

注意事项

  • 若静态网站配置了CDN,回滚后需添加清除CDN缓存的步骤,确保用户能看到回滚后的内容
  • 回滚脚本需配置足够的Azure存储账户权限,可通过Azure DevOps的服务连接实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:42:53