我有一个使用 Octopus Deploy 的部署过程,并且我有一个关于数据库部署的问题。这可能是一个更一般的数据库部署问题,而不是 Octopus 部署问题。
我们目前使用 DacPacs 部署数据库,然后使用 DBUp 对现有环境进行更改以使其保持最新状态。DacPac 会随着数据库结构的更改而更新,并包含一些数据。DBUp 脚本允许更新实时环境以跟踪对数据库结构和数据的更改。目前,DacPac 和 DBUp 脚本都在同一个 Octopus Deploy 进程中。
我们已经使用 Octopus Deploy 流程来使用 DacPac 创建我们的测试环境和生产环境数据库。然后我们关闭这些步骤并使用 DBUp 脚本使数据库(和数据)保持最新。
问题是我们是否需要稍后从头开始创建一个新环境来进行数据迁移。在这种情况下,我们需要在打开 DacPac 步骤的情况下创建 Octopus Deploy 版本,将版本部署到仅数据迁移环境。然后我们不需要在其他任何地方部署该版本(因为它可能会擦除现有数据库),然后我们需要再次关闭 dacpac 步骤,以便将下一个版本发布到现有环境中。这种方法感觉很hacky,它可能会导致数据库在另一个环境中被错误地擦除。
我开始认为我们应该有两个流程。一个用于创建新数据库(包含表、数据等),另一个用于部署代码和任何数据库更新。这将从主部署脚本中完全删除 DacPac 步骤,并使我们免于关闭和打开步骤(并希望通常降低出错的风险)。
请注意,由于时间压力,我看不到我们在短期内移除 DacPac 并只使用 DBUp 或任何其他重大工程返工。
我只是想知道其他人如何处理这种情况?