为 Azure SQL 数据库实现 CI/CD

已完成

现在,你了解了如何部署、配置和使用 Azure SQL 数据库来为新式应用程序构建强大的基础。 应用程序要求在不断发展和变化,因此下一步是了解如何在需要时更新你的数据库。 开发操作 (DevOps) 是一组可提供帮助的原则和实践。

DevOps 是人员、过程和产品的结合,不断为客户提供价值。 采用 DevOps 的文化、做法和工具的团队将获得高绩效,可以用更快的速度构建更好的产品以获得更高的客户满意度。

数据库是解决方案的主要组成部分之一;因此,将其与 DevOps 实践集成的能力是新式敏捷应用程序开发的关键部分。

借助 Azure SQL,可通过多种方式在 DevOps 过程中包含数据库。 持续集成 (CI) 和持续交付 (CD) 管道是 DevOps 环境的主干,Azure SQL 可以与所选的任何 CI/CD 工具完全集成。 Azure 中最常见和使用最广泛的两种工具是 GitHub Actions 和 Azure DevOps。

为数据库实现 CI/CD

将数据库作为 CI/CD 管道的一部分意味着你希望以完全自动化、可重现和确定的方式来配置和部署结构,甚至是某些数据。 配置后,你可随时运行部署或更新过程任意次数,这都会得到一致的结果。

在本单元中,你将了解实现数据库的 CI/CD 管道的三种主要方法:

  • 所需状态
  • Code First 迁移
  • 自定义脚本

将所需状态方法与 SqlPackage.exe 一起使用

对于 Desired State 方法,可拍摄引用数据库结构的快照,以表示所需状态。 然后,可以使用该快照将另一个目标数据库(通常是测试或生产数据库)同步到所需状态。 可使用 SqlPackage.exe 等工具将快照放入 .dacpac 文件中。 当 .dacpac 应用于目标数据库时,它将自动查找差异、生成正确的脚本,并应用该脚本来将目标架构与参考项同步。

我们在乘车场景中使用 Desired State 方法;它可能是讨论的三种方法中最简单的一种。

根据语言实现 Code First 迁移

如果你不想编写 T-SQL 脚本,但想要让 C#、Python 或 Node 以及解决方案中定义的实体(例如公交车、路线或位置)自动生成数据库和架构,那么还有一种方法。 通常有一种特定工具随平台或框架提供或适用于相关平台或框架。 这些工具可确保每次更改或添加字段或实体时,新结构都会反映在数据库中。 可以在本模块的末尾找到针对特定平台和框架的工具参考。

使用手动脚本进行分步部署

使用手动脚本方法时,开发人员会仔细编写用于创建和更改数据库所需的脚本,并随时间推移仔细维护。 脚本部署在生产环境中后,将绝不会被更改,而是会创建一个新脚本。 每个脚本都包含将数据库进展到与新架构相符所需的代码。 在需要从头开始部署数据库的情况下,必须按正确的顺序执行所有脚本,以确保正确创建和开发数据库。 部署脚本后,可以使用 SQL Server Data Tools (SSDT) 中的架构比较实用工具等工具来比较数据库定义。 这可帮助确保部署的脚本不会在后续执行中再次应用于同一数据库。

选择管道工具来轻松实现 CI/CD

确定最适合更新数据库的方法后,可选择两种常见解决方案来实现该方法:Azure DevOps 或 GitHub Actions。

使用 Azure DevOps 实现 CI/CD

Azure DevOps 是一套产品,它为 DevOps 的各个方面(包括 CI/CD 管道)提供全面支持。 管道由定义管道步骤的任务组成。 从可执行文件的执行到 .NET 解决方案的构建,任务几乎可以是任何内容。 可使用一项名为“Azure SQL 数据库部署任务”的特定任务来部署 .dacpac 文件或执行 .sql 脚本。

使用 GitHub Actions 实现 CI/CD

GitHub 操作允许定义 CI/CD 管道。 使用“操作”来创建管道的步骤。 可使用“操作”来执行几乎任何类型的过程。 使用“Azure SQL 部署”操作可部署 .dacpac 文件。

在下一个练习中,将使用 Azure SQL 操作来部署和更新数据库架构,让你有机会看看它的实际运用情况。

知识检查

1.

下面哪种方法不适用于 Azure SQL 数据库中的 CI/CD?

2.

根据定义,DevOps 是三项内容的结合。 这其中不包含下面哪个选项?