VSTS数据库部署到Azure - 循环任务组(或类似的东西)

时间:2018-05-29 11:11:41

标签: azure azure-pipelines-release-pipeline

我正在尝试为一组共享相同架构的Azure数据库设置持续部署。在我的情况下,通过复制和重命名标准模板可以创建许多动态数据库。该软件将复制CompanyTemplate数据库并将其重命名为Company_XXXX。

我想在VSTS(托管)中创建一个任务组和/或一个脚本,它可以查询主数据库,获取公司数据库名称的列表,然后循环所述任务组以部署相同的模式和创建的每个公司数据库的脚本。

我一直在谷歌搜索和测试几天的结束,但我找不到任何与如何做到这一点有关的事情。有什么想法吗?这可能吗?

2 个答案:

答案 0 :(得分:2)

VSTS Build / Release环境中没有循环概念。

有几种解决方法可以让人想到:

  • 运行powershell脚本并在那里实现逻辑。在Powershell中使用循环结构。
  • 运行powershell以使用REST API触发任意数量的构建。

答案 1 :(得分:1)

首先,我要承认,阅读@jessehouwing的答案引发了一些关于我的想法。

正如他在回答中提到的那样,没有什么可以直接做你所要求的。但是,根据您希望部署数据库的方式,我们会想到一些技术。

  1. ARM模板 -
    1. 设置使用Resource Iteration部署多个Azure SQL数据库的ARM模板。 (关于如何做到这一点,请参见MS DOCS)。配置模板以将现有数据库的模式复制到新模式。您需要将部署到Azure的模板数据库用作模式源。要配置ARM模板以将新数据库创建为模板的副本,请查看SQL数据库ARM模板(SQL ARM Template documentation)的createMode属性。
    2. 运行Powershell脚本,查询主数据库以获取公司列表(Query DB from Powershell)。
    3. 将数据库查询的结果输出到VSTS变量,并将该变量传递给ARM模板以生成数据库。
  2. DACPAC -
    1. 在Visual Studio中从SQL DB项目创建DACPAC。
    2. 您可以创建一个仅定义数据库模式的DACPAC,并使用上面的ARM模板技术为混合技术中的每个数据库运行DACPAC - 或
    3. 您可以创建一个查询主数据库的dacpac列表 公司并根据定义的每个数据库创建一个数据库 架构。此选项封装了创建模式的过程 并查询主数据库以将所有数据创建为单个数据库 部署工件
  3. 每个选项都有其优点和缺点。 ARM模板选项将为您提供最大的灵活性,但要求您具有可从中复制的模板数据库。

    DACPAC选项需要熟悉使用该技术部署数据库,并且可能仍需要ARM模板才能使流程尽可能灵活。它确实提供了将所有数据库部署部分封装到一个步骤的潜力。

    这里有相当多的变量,但我认为这应该给你一些考虑的选择,这将带你走向可行的方向。