【问题标题】:Deploying a database package to SQL Server through Octopus & TeamCity通过 Octopus 和 TeamCity 将数据库包部署到 SQL Server
【发布时间】:2019-12-31 10:14:38
【问题描述】:

我正在通过 Redgate 软件和 TeamCity 为 SQL Server 数据库实施 CI/CD。我设法构建 NuGet 数据库包并将其推送到 Octopus。我可以在 Octopus 的库部分看到 NuGet 包。但是我在将该包部署到 SQL Server 时遇到了问题。我在 Octopus 进程部分找不到内置步骤模板“部署 NuGet 包”。我也尝试过“部署包”步骤模板,但没有成功。我正在遵循本指南。

https://documentation.red-gate.com/sr1/worked-examples/deploying-a-database-package-using-octopus-deploy-step-templates

任何帮助都将受到高度赞赏。

【问题讨论】:

    标签: sql-server database devops octopus-deploy redgate


    【解决方案1】:

    好问题,要将 Redgate 的工具与 Octopus Deploy 一起使用,您需要安装他们提供的步骤模板。我推荐create a database releasedeploy a database release。当您浏览步骤模板时,您可能会注意到deploy directly from a package 的步骤模板。 SQL 变更自动化的基于状态的功能通过将存储在 NuGet 包中的数据库的状态与目标数据库进行比较来工作。每次运行时,它都会创建一组新的增量脚本来应用。因此,推荐的流程是:

    1. 将数据库包下载到跳转框。
    2. 通过将跳转框上的包与 SQL Server 上的数据库进行比较来创建增量脚本。
    3. 查看增量脚本(可以在开发和测试中跳过)。
    4. 使用跳转框上的触手在 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 供执行数据库部署的用户使用。

    希望有帮助!

    【讨论】:

    • 感谢您的回复。即使我遵循了所有步骤。我的问题仍然存在。我还将错误和配置通过电子邮件发送给您。请查看并恢复。谢谢
    • 抱歉,您仍然遇到问题。关于电子邮件/私人消息,上面的帖子似乎跳过了几个步骤,请务必关注所有步骤。请记住,八达通只是其中的一部分。请阅读本文以连接所有部分:octopus.com/blog/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多