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

Deployment 如何部署:1个补丁中的数据库、源代码和二进制更改?,deployment,migration,patch,Deployment,Migration,Patch,我是一个开发团队的成员,该团队使用Joomla和Drupal等系统处理许多基于CMS的项目 在我们的开发过程中,所有代码更改都在Git内部管理。在sprint结束时,我们创建了一个DIFF,我们可以通过补丁应用于live站点 问题是,大多数时候,这些变化包括 数据库架构更改 数据库数据更改 源代码更改 二进制文件更改(如图像) Git Diff完美地处理源代码更改。二进制文件仅不包括在差异中,除非参考文件已更改的事实 数据库模式更改和数据库数据更改都是一团糟 我想知道是否存在一个统一的补丁系

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

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

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

  • 数据库架构更改
  • 数据库数据更改
  • 源代码更改
  • 二进制文件更改(如图像)
Git Diff完美地处理源代码更改。二进制文件仅不包括在差异中,除非参考文件已更改的事实

数据库模式更改和数据库数据更改都是一团糟

我想知道是否存在一个统一的补丁系统,可以用来在一个补丁中部署所有这些更改

所以问题是,“是否有一个系统可以用于一次性部署所有这些更改?

理想情况下,该系统允许像补丁一样运行干运行,但适用于所有4种数据类型

编辑: 感谢大家提供的反馈,这是我在这一领域研究的起点

以下是我到目前为止的发现:

  • 很难部署基于php的应用程序 使用linux打包的应用程序 系统,因为 项目以迭代方式进行,而不是 然后作为发布

  • 可以使用dbconfig将更改部署到 项目,但问题是 生成mysql数据库差异(模式 (信息和数据)

  • 部署基于php的应用程序缺少什么 是一个部署管理器 将安装在服务器上,并将 是部署的接口 补丁

  • 我在这个话题上发起了一个谷歌浪潮,结果产生了很多信息。
    如果有人对阅读这一浪潮感兴趣,请告诉我,我会加上你。

    我认为你不会找到一个故障安全机制

    我建议,在可能的情况下,在进行架构/数据更改时考虑与当前发布源的兼容性

    通过这种方式,您可以创建一个v.simple工具,运行提交到特定svn位置的数据库脚本(您不希望数据库更改有差异,就好像您需要进一步修改一样,您需要不同的语句)

    完成上述操作后,您可以使用一个简单的命令来运行数据库更改,然后更改二进制代码和源代码


    对于数据库,还可以选择模式和数据比较工具,这些工具可用于比较环境并确保更改脚本中没有任何意外缺失-也可以生成更改脚本,但正如我所说,您确实希望确保它不会中断当前源。

    用于处理安装和upgr对于我们的应用程序,我们使用。(.deb包)

    背景: 我们正在制作J2EE+Flex应用程序。通过VPN发货和管理。 离你不远

    通过puppet(一个自动化系统管理任务的系统:他安装了我们的.deb)重新安装并升级到另一个版本

    在我们的房间里,黛布

  • 我们编译的源代码
  • 数据库的架构(由[db config][1]处理)
  • 二元材料
  • 如何通过apt安装所需的所有其他应用程序(mysql、tomcat…)
  • =新安装的所有内容

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

  • 用于升级数据库的脚本(针对每个版本)
  • 新二进制
  • 要在机器启动时启动的新东西(例如:几周前,我们添加了一个activeMQ服务器)
  • =>一旦.deb正确生成,我们就可以在一次操作中无缝安装或升级。(它是自动生成的,没有任何提示)

    它们是一个.deb每个realease,每个.deb都有一个版本号和一个签名。 你可以选择我们的任何一个.deb,重新安装,或者从实际版本升级到他持有的版本号

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


    好处是什么

    • 自信地自动安装/升级
    • 回滚一个版本
    • run-dry是本机支持的

    就你而言

    * Database Schema Changes
    * Database Data Changes
    * Source Code changes
    * Binary file changes (like images)
    
    Database=>您必须编写迁移脚本。每个版本一个。(例如:1.2-update.sql 1.3-update.sql)

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

    编辑:我不确定源代码。我们正在用编译后的代码来做


    开始时的一些链接:

    (法语)

    [1] :dbconfig


    [1] :debian

    您可以创建一个工具来轻松地进行迁移,类似于Peoplesoft的补丁升级助手

    它基本上是一个独立的可执行文件,读取“升级模板”并执行任务。升级模板以声明方式描述升级任务或“步骤”。这些步骤可以是-copy(用于备份或移动预编译对象,如类和othar二进制文件)、数据库(用于更改架构元素)、SQL脚本(用于加载或转换当前数据)。这些步骤将具有一些谓词逻辑功能-如果是这样,请执行此操作,否则跳过它并转到下一步等

    模板通常是XML文件。它还提供手动步骤以及手动操作说明。每个步骤还指定是否可恢复。它还将验证步骤是否成功


    可能有一个围绕这一需求的开源项目,这是很常见的。

    您需要将git commit对象保存在本地文件中,然后将它们导入其他repo/branch。

    +1与我所说的一致,