如何在VSTS发布期间应用客户特定的配置?

时间:2018-03-20 13:34:53

标签: azure-devops azure-pipelines-release-pipeline

我们想尝试在VSTS中为我们的产品构建一个发布管道 - 但是,我们的产品需要每个客户单独的应用程序实例(图中有一些遗留问题:))。我们想要的是一个像这样的过程:

对于每位客户:

  • 更新数据库架构
  • 使用客户特定配置等配置容器。
  • 将容器发布到Azure容器注册表
  • 在Azure容器服务中部署容器(如果客户在本地运行,则在本地部署)

配置可以是多种内容:应用程序中API的扩展(基本上是新的DLL),连接字符串,......

我认为我们可以使用自定义PowerShell脚本相当容易地做到这一点,但我想不写任何自定义(至少对于“循环”问题),如果我不需要。我们还可以为每个客户在VSTS中创建单独的环境,但对于超过100个客户而言,这似乎是不可维护的。

一些额外的细节: - 每位客户都有一个单独的数据库 - 每个客户有两个单独的 Web应用程序

那么这里的最佳做法是什么?有什么建议?谢谢! : - )

Our thoughts on how we want to deploy our application in the future

1 个答案:

答案 0 :(得分:1)

你可以想到以两种方式做到这一点。

1 - 为每个客户创建一个环境。因此,您可以为每个环境执行完全相同的任务,或者可以灵活地更改特定环境中的步骤。

这种方法还可以让您使用流程管道,因为只有在通过内部质量检查和其他流程后才会发布构建。

为了方便起见,您还可以创建任务组,然后在每个环境中重复使用。

2 - 另一种方法是为每个客户或一组客户创建单独的发布版本。这也会给你相同的灵活性,你可以使用你的构建,但你必须添加一些额外的步骤,以确保你使用正确的构建,因为你可以在创建一个版本时选择任何构建,你可以做mannualy

<强>更新

第三种选择可以是为所有客户创建环境,然后为每个客户安装一个部署代理,在同一部署组中使用所有客户。然后有一个文件包含每个客户的所有变量,文件以代理名称命名,powershell脚本使用代理名称变量来查找要运行的文件。然后,此PowerShell脚本将运行您的所有个人配置。

在这种情况下,我怀疑你最终会在powershell中进行几乎所有的部署,这对你来说可能更耗时。您还必须记住,在此特定方案中,您将同时更新所有客户,因为所有代理都将位于同一部署组中。