删除Azure DevOps源分支时自动清理Azure静态Web应用分支预览环境
解决Azure DevOps分支删除后自动清理Static Web App预览环境的方案
实现思路
通过Azure DevOps的分支删除触发器触发专用流水线,结合Azure CLI执行环境删除命令,实现分支删除与预览环境清理的自动化联动。
具体步骤
- 创建专用清理流水线
在Azure DevOps中新建流水线,配置分支删除触发器,监控除主分支外的所有分支删除操作:
trigger: branches: exclude: - main # 排除生产分支,避免误操作 delete: true # 启用分支删除触发规则
- 添加Azure CLI清理任务
为流水线添加Azure CLI任务,利用DevOps内置变量获取被删除分支名,匹配Static Web App自动生成的预览环境命名规则,执行删除命令:
pool: vmImage: 'ubuntu-latest' steps: - task: AzureCLI@2 inputs: azureSubscription: '你的Azure服务连接名称' # 替换为实际服务连接 scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | # 转换分支名为小写,匹配Static Web App环境命名规则 BRANCH_NAME=$(echo "$BUILD_SOURCEBRANCHNAME" | tr '[:upper:]' '[:lower:]') # 生成对应预览环境名称(默认规则为env-分支名) ENV_NAME="env-$BRANCH_NAME" # 执行环境删除命令,--yes参数跳过确认 az staticwebapp environment delete --name '你的静态Web应用名称' \ --environment-name "$ENV_NAME" --subscription '你的订阅ID/名称' \ --yes
- 权限配置
确保Azure DevOps使用的服务连接对应的服务主体,拥有目标Static Web App的环境删除权限,最简单的方式是给服务主体分配该Static Web App的参与者角色。
关键注意点
- 预览环境命名规则:Static Web App自动创建的分支预览环境默认格式为
env-小写分支名,若分支名含特殊字符会被替换为-,需确保脚本中的ENV_NAME与实际环境名一致 - 避免误删:务必在触发器中排除生产分支(如main),防止生产环境被意外清理
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

