持续集成 - 数据库更改

Posted

技术标签:

【中文标题】持续集成 - 数据库更改【英文标题】:Continuous integration - Database changes 【发布时间】:2017-06-22 01:00:33 【问题描述】:

我正在学习 Jenkins 和 liquibase。我正在将它集成到一个用 maven 制作的 java 项目中。

在我的特定情况下,一旦应用程序的一个版本发布给客户端,应用程序就会与 SQL 脚本一起交付以更新数据库。我无法提供更新日志文件以使用 liquibase 进行更新,很多时候客户希望确切了解对其数据库进行了哪些更改。

我在 Jenkins 中创建了一个管道,每次使用应用程序版本创建标签时,都会从 git 下载,编译,将编译后的二进制文件保存在云端,然后更新测试环境。这很好用。

现在在我的特殊情况下,客户会说:“我已经安装了 1.3 版的应用程序,我想安装 2.0 版。” 我必须能够为您提供 SQL 脚本来更新您的数据库。 用 liquibase 解决这个问题的最佳方法是什么? 有人对此有什么建议吗?你知道这方面的任何其他工具吗? 对不起我的英语。

【问题讨论】:

【参考方案1】:

通过 maven updateSQL 目标使用 SQL Output。

如果你像这样组织你的变更集:

db.changelog.xml(所有变更集)release1(文件夹) db.r1.changelog.xml(发布 1 变更集) db.r1.changeset1.xml db.r1.changeset2.xml ...release2(文件夹) db.r2.changelog.xml(发布 2 变更集) db.r2.changeset1.xml db.r2.changeset2.xml ...

您可以使用以下 maven 命令生成 SQL 脚本以将数据库从 release1 更新到 release2

mvn liquibase:updateSQL 
-Dliquibase.changeLogFile=db.r2.changelog.xml 
-Dliquibase.properties=your-project.properties

【讨论】:

以上是关于持续集成 - 数据库更改的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins持续集成 之 git更改提交

20+最好的持续集成工具

如何理解持续集成持续交付持续部署?

jenkins + Git 搭建持续集成环境

jenkins + Git 搭建持续集成环境

入门系列之在Ubuntu上安装Drone持续集成环境