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

VSTS Database Deployment to Azure - Loop a Task Group (or something like that)

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

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

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

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

有一些 sprint 的解决方法:

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

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

正如他在回答中提到的那样,没有任何东西可以直接满足您的要求。但是,确实会想到一些技术,具体取决于您希望如何部署数据库。

  1. ARM 模板 -
    1. 设置一个使用资源迭代部署多个 Azure SQL 数据库的 ARM 模板。 (参见 MS DOCS on how to do that). Configure the template to copy the schema of an existing DB to the new ones. You'll need that template DB deployed to Azure to act as the schema source. To configure the ARM template to create the new databases as a copy of the template, look at the createMode property of the SQL Database ARM template (SQL ARM Template documentation)。
    2. 运行 查询主数据库以获取公司列表的 Powershell 脚本 (Query DB from Powershell)。
    3. 将数据库查询的结果输出到 VSTS 变量并将该变量传递到 ARM 模板以生成数据库。
  2. DACPAC -
    1. 从 Visual Studio 中的 SQL 数据库项目创建 DACPAC。
    2. 您可以创建一个仅定义数据库架构的 DACPAC,然后使用上面的 ARM 模板技术 运行 以某种混合技术为您需要的每个数据库创建 DACPAC - 或者
    3. 您可以创建一个 dacpac 来查询您的主数据库以获取列表 公司并根据定义为每个公司创建一个数据库 模式。此选项封装了创建模式的过程 并查询主数据库以将其全部创建为一个 部署工件

每个选项都有其优点和缺点。 ARM 模板选项将为您提供最大的灵活性,但要求您有一个模板数据库可供复制。

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

这里有相当多的变数,但我认为这应该为您提供一些可供考虑的选项,这些选项将带您走向可行的方向。