好问题,要将 Redgate 的工具与 Octopus Deploy 一起使用,您需要安装他们提供的步骤模板。我推荐create a database release 和deploy a database release。当您浏览步骤模板时,您可能会注意到deploy directly from a package 的步骤模板。 SQL 变更自动化的基于状态的功能通过将存储在 NuGet 包中的数据库的状态与目标数据库进行比较来工作。每次运行时,它都会创建一组新的增量脚本来应用。因此,推荐的流程是:
- 将数据库包下载到跳转框。
- 通过将跳转框上的包与 SQL Server 上的数据库进行比较来创建增量脚本。
- 查看增量脚本(可以在开发和测试中跳过)。
- 使用跳转框上的触手在 SQL Server 上运行脚本。
让我们继续逐一介绍。下载包的步骤非常简单,除了选择包名外没有自定义设置。
Redgate - 创建数据库发布步骤更有趣一些。这是生成将在数据库上运行的实际增量脚本的步骤。大多数人绊倒的是出口路径。导出路径是将增量脚本导出到的位置。这需要是 Octopus Deploy 触手文件夹之外的目录。这是因为“Redgate - 从数据库发布部署”步骤需要访问该路径,并且每个步骤的触手文件夹都不同。
我喜欢做的是使用项目变量。
变量的完整值为:
C:\RedGate\#{Octopus.Project.Name}\#{Octopus.Release.Number}\Database\Export
下一步是批准数据库版本。我建议创建一个自定义团队来负责。我的偏好是在 Dev 和 QA 中跳过这一步。
创建数据库发布步骤利用 Octopus Deploy 中内置的工件功能。这允许审批者下载文件并进行审查。
最后一步是部署数据库版本。此步骤在导出数据路径中获取 delta 脚本并在目标服务器上运行它。这就是为什么我建议将导出路径放在变量中的原因。
其他一些有助于开始的常规项目。首先,不要将触手直接安装到 SQL Server 实例上。在生产中,典型的 SQL Server 设置是一个集群,或者它们有多个节点,具有始终在线的高可用性。通过虚拟 IP 处理对 SQL Server 的访问。
如果您要在两个节点上安装触手,Octopus Deploy 将尝试同时在两个节点上运行更改脚本(默认情况下)。这会引起很多戏剧性的事情。我建议使用跳转框,因为您需要在 Octopus Deploy 和 SQL Server 之间放置一些东西。当您对此感到满意时,我建议您使用工作人员(但这有点范围蔓延,所以我不会对此进行介绍)。
如果您想了解更多关于如何连接它的信息,请查看我写的博客文章(并复制自此答案)here。
我还用 Octopus Deploy 编写了关于数据库部署的完整系列,您可以找到 here。
最后,您将需要我们的documentation covers jump boxes and permissions 供执行数据库部署的用户使用。
希望有帮助!