gpt4 book ai didi

continuous-integration - 对数据库的更改应该始终是 CI 的一部分吗?

转载 作者:行者123 更新时间:2023-12-01 04:09:51 24 4
gpt4 key购买 nike

这个问题是在与我合作的开发团队提出的,我们无法真正达成共识:
Should changes to the database be part of the CI script?
假设您正在使用的应用程序涉及一个数据库。我认为是的,因为这是集成的定义。如果您没有包含应用程序的一部分,那么您就没有真正测试您的集成。反对意见是 CI 服务器是确保您的基本项目设置正常工作的地方——本质上是构建最新版本代码的原始 check out 。

是否有 CI 的“最佳实践”文档可以回答这个问题?这是那些对 CI 充满热情的人争论的事情吗?

Martin Fowler's opinion on it:

A common mistake is not to include everything in the automated build. The build should include getting the database schema out of the repository and firing it up in the execution environment.

最佳答案

所有代码,包括数据库架构和预先准备的表值都应该受到源代码控制和持续集成的约束。我已经看到很多使用源代码控制的项目 - 但不是在 DB 上。相反,有一个主数据库实例,每个人都在那里同时进行更改。这使得无法进行分支,也无法重新创建系统的早期状态。

我非常喜欢使用 Visual Studio 2010 Premium 的数据库架构处理功能。它使数据库架构成为项目结构的一部分,使主架构处于源代码控制之下。可以直接从项目中创建一个新的数据库。将自动生成将现有数据库提升到新模式的升级脚本。

如果可能的话,在没有 VS2010 Premium 或类似工具的情况下对数据库进行正确的更改管理充其量是痛苦的。如果您没有该工具支持,我可以理解您的同事想要将数据库排除在 CI 之外。如果您在争论将 DB 包含在 CI 中时遇到问题,那么首先获得用于 DB 工作的 descen 工具集可能是一个选择?一旦您拥有了正确的工具,自然而然地将 DB 包含在 CI 中。

关于continuous-integration - 对数据库的更改应该始终是 CI 的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com