如何配置Azure DevOps:仅允许master分支部署数据模型至Azure Analysis Service
仅允许master分支部署到Azure Analysis Service的Azure DevOps配置方案
1. 限制流水线的自动触发分支
首先给部署AAS的流水线设置触发规则,只有master分支变更才自动启动部署:
- 打开你的Azure DevOps项目,进入流水线页面,选中负责AAS部署的那条流水线
- 点右上角的编辑,切换到触发器标签页
- 在持续集成区域:
- 勾上启用持续集成
- 分支过滤器里只留
refs/heads/master,删掉其他所有分支条目 - 如果需要偶尔手动跑其他分支的部署,保留手动触发选项就行,自动触发只限于master
要是用YAML写流水线,直接加这段触发规则:
trigger: branches: include: - master exclude: - '*'
2. 给master分支加保护策略
防止有人直接往master推代码,确保部署的代码都是经过审核的:
- 进入项目的仓库页面,选目标仓库,切换到分支标签
- 找到master分支,点右边的三个点,选分支策略
- 在配置页里:
- 开需要最少数量的审阅者,比如设1个以上,确保合并前有人审核
- 可选开构建验证,要求合并前必须跑通相关流水线,提前排查问题
- 关掉允许直接推送,强制所有变更都得通过Pull Request合并到master
- 开要求解决所有对话,保证审阅时提的问题都处理完才能合并
3. 给部署任务加分支判断条件
如果你的流水线同时包含其他分支的构建、测试步骤,只想让master分支执行部署,就在YAML里给部署任务加条件:
- task: AzureAnalysisServicesDeployment@1 displayName: '部署到Azure Analysis Service' condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') inputs: azureConnection: '你的AAS服务连接名称' server: 'asazure://xxx.asazure.windows.net/你的AAS服务器名' database: '要部署的目标数据库名' projectFilePath: '模型项目文件的路径,比如./Model/Model.bim'
这样就算其他分支触发了流水线,部署步骤也只会在master分支下运行。
4. 额外权限控制(可选)
要是想进一步限制谁能触发部署:
- 进入流水线的安全设置,只给特定团队或用户开排队或编辑流水线的权限
- 对Azure Analysis Service本身,只让DevOps的服务主体或者指定的部署账号有写入权限,避免有人手动绕过流水线部署
内容的提问来源于stack exchange,提问作者Teatimeman
相关产品推荐
相关产品推荐

