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

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

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

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

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

【问题讨论】:

    标签: java jenkins continuous-integration liquibase sql-scripts


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      相关资源
      最近更新 更多