java - 持续集成 - 数据库更改

标签 java jenkins continuous-integration liquibase sql-scripts

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

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

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

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

最佳答案

使用SQL Output通过maven updateSQL目标。

如果您像这样组织变更集:

db.changelog.xml (all changeSets)
release1 (folder)
db.r1.changelog.xml (release1 changeSets)
db.r1.changeset1.xml
db.r1.changeset2.xml
...
release2 (folder)
db.r2.changelog.xml (release2 changeSets)
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

关于java - 持续集成 - 数据库更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44688453/

相关文章:

performance - 与 googletest 和 Jenkins 比较/趋势测试数据

git - 即使没有更改存储库,Jenkins 也会持续在 Windows slave 上构建

java - RandomAccessFile:在最后一项后添加空格?

java - 如何在 java 上显示所有对象

c++ - 在Jenkins "exec"中运行 "Execute Shell"命令

visual-studio - 有关持续集成系统的建议

docker - Kubernetes VolumeMount 路径包含时间戳

java - 通过 JPA 注释的聚合关系

java - 如何模拟包含可能引发 NPE 的变量的类

delphi - 德尔福持续集成系统