持续集成 - 数据库更改
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
【讨论】:
以上是关于持续集成 - 数据库更改的主要内容,如果未能解决你的问题,请参考以下文章