如何部署:1个补丁中的数据库,源和二进制更改?

Tar*_*ski 8 migration deployment patch

我是一个开发团队的一员,该团队使用Joomla和Drupal等系统处理许多基于CMS的项目.

在我们的开发过程中,我们所有的代码更改都在Git内部进行管理.在sprint结束时,我们创建一个DIFF,我们可以通过补丁应用到实时站点.

问题是大多数时候,变化包括

  • 数据库架构更改
  • 数据库数据更改
  • 源代码更改
  • 二进制文件更改(如图像)

Git Diff可以很好地处理源代码更改.二进制文件仅包含在Diff中,除非引用文件已更改.

数据库架构更改和数据库数据更改是一团糟.

如果存在可用于在1个补丁中部署所有这些更改的统一补丁系统,我就会徘徊.

所以问题是,"是否有一个系统可用于在一次拍摄中部署所有这些变化?

理想情况下,该系统允许像补丁那样运行干运行,但是对于所有4种数据类型都是如此.

编辑:感谢大家提供的反馈,这是我在这方面的研究的起点.

这是我到目前为止发现的:

  1. 使用Linux打包系统部署基于php的应用程序很困难,因为项目的更改是迭代发生而不是发布.

  2. 可以使用dbconfig将更改部署到项目,但问题是生成mysql db diffs(架构和数据)

  3. 部署基于php的应用程序真正缺少的是一个部署管理器,它将安装在服务器上,并且是部署补丁的接口

我在这个主题上开了一个Google Wave,结果产生了很多信息.如果有人有兴趣阅读此浪潮,请告诉我,我会加你.

Ant*_*val 2

为了处理应用程序的安装和升级,我们使用debian 打包系统。(.deb 包)

背景:我们正在制作 J2EE + Flex 应用程序。通过 VPN 进行运输和管理。所以离你并不远。

一个版本的全新安装和升级是通过 puppet (一个用于自动执行系统管理任务的系统:他安装我们的 .deb )进行的

在 .deb 中我们有

  1. 我们编译的源代码
  2. 数据库的模式(由 [db-config][1] 处理)
  3. 二进制的东西
  4. 如何通过 apt 安装所需的所有其他应用程序(mysql、tomcat ...)

= 全新安装的所有内容

我们还添加了从一个版本转到另一个版本的信息

  1. 升级数据库的脚本(针对每个版本)
  2. 新的二进制文件
  3. 在机器启动时启动的新内容(例如:几周前我们添加了一个 activeMQ 服务器)

=> 一旦 .deb 正确制作,我们就可以通过一次操作无缝安装或升级。(它是自动生成的,没有任何提示)。

每个版本都有一个 .deb,每个 .deb 都有一个版本号和一个签名。您可以选择我们的任何 .deb 并进行全新安装或从实际版本升级到他持有的版本号。

.deb 位于我们的持续集成系统中。(我们每小时构建一个 .deb,就像我们即将发布新版本一样)


有什么好处?

  • 自动安装/升级,充满信心。
  • 回滚一个版本
  • 原生支持跑干

根据您的具体情况

* Database Schema Changes
* Database Data Changes
* Source Code changes
* Binary file changes (like images)
Run Code Online (Sandbox Code Playgroud)

数据库 => 您必须编写迁移脚本。每个版本一个。(例如:1.2-update.sql 1.3-update.sql)

源代码和二进制=>添加它们,比如说在女巫版本中它们必须被复制/使用

编辑:我不确定源代码。我们正在使用编译代码来做到这一点......


一些启动链接:

https://wiki.ubuntu.com/PackagingGuide/Complete

http://www.debian.org/doc/manuals/maint-guide/index.fr.html#contents(法语)

[1]:http://pwet.fr/man/linux/formats/dbconfig dbconfig

[1]: http: //www.debian.org/doc/FAQ/ch-pkg_basics.en.html debian