【问题标题】:How to include database migration scripts in build artifacts如何在构建工件中包含数据库迁移脚本
【发布时间】:2017-12-01 08:47:41
【问题描述】:

根据 Martin Fowler 的出色 article

构建成功完成后,CI 服务器会打包构建工件并发布它们。这些构建工件包含数据库迁移脚本,因此它们可以应用于下游环境中的数据库(...)

我的问题是如何在基于 Java 的工作流的实践中实现这一点?构建工件通常是 .war、.jar 或 .ear 文件,并发布到 Nexus、Archiva 或 Artifactory 服务器。迁移脚本是否可以包含在这些工件中,以便在不修改目标环境的情况下执行迁移? Flyway 或 Liquibase 等工具可以用于此目的吗?

【问题讨论】:

    标签: java migration liquibase flyway


    【解决方案1】:

    是的!我们(Flyway)强烈建议将您的迁移与您的应用程序打包并在启动时运行它们。这样可以确保您的数据库始终包含当前版本的应用程序所需的对象(表、视图、存储过程...)。

    【讨论】:

      【解决方案2】:

      我们使用 maven 构建工件,并且在 src/main/resources/db/migration 文件夹下有 flyway 迁移脚本。

      App 是一个 Spring Web 应用,在 Spring 容器启动期间,它运行 Flyway migrate。如果出现问题,应用程序永远不会启动。

      这样我们可以确保数据库状态是应用启动时所需要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-02
        • 2016-03-05
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 2017-03-04
        • 2021-07-15
        相关资源
        最近更新 更多