如何在VSTS版本管理中使用多个配置构建和部署Azure Cloud Service?

时间:2017-11-24 10:58:46

标签: asp.net-mvc azure-devops azure-pipelines azure-cloud-services azure-pipelines-release-pipeline

我们正在使用团队服务维护我们的网站项目,并使用 Azure 进行托管。目前,有几个 Web角色(asp mvc)和 Worker Roles ,它们被托管为云服务。我们将为他们设置持续集成和交付

如您所知,团队服务构建定义建议使用 Azure云服务模板来构建和 Azure云服务部署任务进行部署。我们已经尝试过单一云服务,但它确实有效。

在我们的案例中,Web项目(Web角色)和调度程序(worker角色)作为单独的云服务,它们应该同时(按顺序)部署,让它成为DEV环境。但是我们有更多的环境:dev,qa,ta,demo,preview,production等。此外,它们每个都有不同的 web.config,ServiceDefinition.csdef和ServiceConfiguration.cscfg 。而且只需部署一个 Cloud Service 即可完成更复杂的任务。

问题是:

  • 我们是否应该构建数十个 Cloud Service pachages (工件),然后决定部署哪些?你能建议如何以适当的方式做到吗? (在大多数情况下,它只是Dev环境,我们将浪费时间和资源来构建其他工件)。

  • 构建一个公共工件并稍后替换特定环境的所有配置会更好吗? (这是一项更复杂的任务,因为Cloud Service软件包已经多次使用预先配置的ServiceDefinition和ServiceConfiguration压缩)

  • 在部署模式下替换配置令牌(web.config,serviceconfiguration等)的最佳方法是什么,或者应该在构建项目时完成?

如果您建议任何最佳做法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于azure云项目,最好在构建之前将更改应用于环境,这样您就可以在发布过程中构建项目。

关于部署到相应的环境,您可以使用构建标记配置工件过滤器。

例如:

  1. 将文件(例如json,xml或txt)添加到用于确定发布应部署哪些环境的项目中
  2. 添加PowerShell任务以构建定义以从该文件读取数据(步骤1)并通过logging commandWrite-Host "##vso[build.addbuildtag]build tag"
  3. 添加构建标记
  4. 添加发布构建工件任务以上载源文件
  5. 创建发布定义和链接工件并添加多个环境
  6. 为每个环境配置预部署条件:启用工件过滤器=>选择artifact =>指定构建标记
  7. 为每个环境添加任务和变量(例如visual studio build)以部署到相应的环境。
  8. 另一方面,关于替换值,有很多方法,例如Replace TokensXDT Transform