让我们说,我们有一个连续的一体化服务器。当我检查,后钩子拉的最新代码,运行测试,包的一切。什么是最好的方式来也自动化数据库的变化?

理想情况下,我想建立一个安装,可以建立一个数据库从头开始或更新现有的一个用一些自动同步的方法。

有帮助吗?

解决方案

如果您有机会定义和控制整个数据库管理和数据库创建过程,请认真研究 DB Ghost - 它不仅仅是一个工具 - 它是一个过程。

如果您喜欢它并且可以实现它,您将获得丰厚的回报 - 但它有点“全有或全无”。一种方法。推荐使用。

其他提示

我最近撞到 一篇文章, 可能的使用。

提交人解释说最好的一些连续的一体化做法,包括测试、处理和自动化。

这里是一些关键内容:

  • 在许多商店代码单元测试点的承诺。对于数据库,它是优选的运行的所有单元的测试一次,并按顺序对质量保证的数据库,与开发,作为一部分测试的步骤
  • 检验步骤的一个关键部分是任何CI/CD过程。测试脚本,包括单位测试本身,还应该版本在源的控制,取的步骤建立和执行
  • 拉数据来自生产的吸引力作为一个快速的权宜之计,但从来都不是一个好主意
  • 最好的办法是使用刀具或脚本以快速反复且可靠地创造合成测试数据对于您的事务表
  • 运行单位测试产生手册》摘要的结果对于人类消费的失败目的的自动化。我们需要机器可读的结果,这可以允许一个自动化进程的中止,分支机构和/或继续。
  • 运行一个CI过程,这需要100%的所有测试的通过,是类似于不具有CI在所有,如果工作流管道设置了原子停止对失败,这也是应该的。螺纹针,试验应该建立在阈值,这将提出一个错误的基础上%的测试失败,或者在某些情况下,如果某些高度优先试验失败。
  • 所有进程应最终产生一个布尔的结果,通过或不通过,但某些非自动化过程可以很容易地找到他们的方式进入你的CI的工作流程管线(例如单元测试)。软件应当插头-n-玩到任何工作流管道,把已知的输入和产生预期的产出状的通过,失败。
  • CI/CD过程中应该中止上的失败和电子邮件通知应立即送vs继续周期的管道。
  • CI进程不应该再次循环直到的任何错误中的最后的建立是固定的。在失败,整个团队应该得到的失败通知,包括作为许多细节,为什么失败,因为可能。
  • 如果一个管道要花1小时,从开始到结束的,要完成,包括所有的测试,然后所建立的时间间隔应该被设置为不少于一小时,所有新的提交应被排队,并应用到未来建立。
  • 没有纯文本的密码,应当存在自动化的脚本

我会警告不要将数据库备份用作开发工件,大多数CI最佳实践建议您将模式,过程,触发器和视图作为一流开发工件进行管理。副作用是你可以更进一步,并使用它们随时建立一个新的数据库,理想情况下你也有一些数据可以推送到数据库。

这是一个悬崖笔记版本,让你的脚湿润,但在这个空间有很多:   http://www.infoq.com/news/2008/02/versioning_databases_series

我喜欢Scott Ambler在这里提出的一些想法,这个网站很好,但是对于这么难的问题,这本书出乎意料地深刻。 http://www.agiledata.org/ http://www.amazon.com/exec/obidos/ASIN/0321293533/ambysoftinc

Red Gate是一个非常强大的解决方案,它开箱即用。 但最好的是,您可以将其与持续集成过程集成。我和Msbuild和Hudson一起使用它。 快速解释它是如何工作的: http://blog.vincentbrouillet.com/post / 2011/02/10 /数据库型模式同步与 - 展鹏

如果您需要了解更多信息,请随时提出

使用SQL Source Control和SQL Compare Pro命令行的Red Gate方法详细介绍了代码示例: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

Troy Hunt撰写了一篇名为“SQL Server数据库的持续集成”的简短文章: http://www.simple-talk.com/content/article.aspx ?文章= 1247

你看过 FluentMigrator 吗?默认下载包括可以轻松添加到CI的Nant脚本。免费,开源且易于使用。适用于各种数据库。

DB Ghost的最新版本(5.0)不受“非ASCII字符”的影响。问题(它只是意味着该文件是UTF8编码的),它应该能够完全满足您的需要。

此外,如果您愿意,这些工具实际上可以单独使用以执行各种功能(脚本,构建,比较,升级和打包),只需将它们全部一起使用即可提供完整的端到端流程,从而使总价值大于其各部分的总和。

从本质上讲,要更改模式,您需要更新在源代码管理下保存的单个对象创建脚本和每个表插入脚本(用于参考数据),就像您正在开发一个“第一天”一样。绿地数据库。 DB Ghost工具用于通过将这些脚本构建到一个全新的数据库(如果需要,使用持续集成),然后比较和升级目标数据库(可以是生产数据库的副本)来启用整个事物。此过程生成一个delta脚本,可以在上线期间在实际生产数据库中使用。

您甚至可以生成Visual Studio数据库项目并将其添加到您当前拥有的任何解决方案中。

MALC

我知道这篇文章很老,但我们有一个新的解决方案采用以下方法:

  1. 开发人员编写单个SQL更改脚本并将其提交到源 控制。
  2. 我们的程序( OneScript )从中提取更改脚本文件     源代码控制,过滤和排序它们,并生成单个     发布脚本文件。
  3. 然后将该发布脚本文件应用于         数据库做一个发布。
  4. 我们的主页此处更详细地解释了此过程,并提供了指向这些过程的示例的链接从Subversion钩子自动执行步骤。提交后不久,开发人员会收到一封电子邮件,说明发布是否成功或是否有错误。包含PowerScript代码。

    免责声明 - 我在制作OneScript的公司工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top