如何在Java应用程序的连续发布过程中使用Flyway?

时间:2017-08-29 14:49:22

标签: flyway

我是Flyway的新手。我非常喜欢它,我将把它集成到我们的Java工作区。在规划这些迁移的实际发布过程时,我需要一点“推动”。根据Flyway的文档,我可以选择

  • 分发Sql文件列表或
  • 分发打包到jar存档中的Sql和Java文件的列表。

我想尝试第二种选择,因为它为我们提供了更大的灵活性,听起来我可以简单地将迁移脚本作为资源包含在可执行文件的jar文件中。但是,由于我们在连续发布过程中经常提供数据库更改,因此我发现jar文件最终被大量脚本文件污染。此外,当使用Ant创建jar文件时,Ant会将每个文件的名称放入清单的类路径中,这将使清单搞砸了。

考虑到这些问题,对于那些在生产中使用Flyway的人来说:

分发迁移脚本的推荐方法是什么?你把它们全部放进一个罐子里并把它传递到服务器上的飞路吗?或者,每次发布时,是否使用批处理文件将所有脚本复制到服务器?谢谢你的建议。

2 个答案:

答案 0 :(得分:0)

  1. 战争项目是用maven构建的
  2. war项目src / main / resources / db / migration具有迁移脚本。
  3. 数据库迁移脚本是构建战争时的包。
  4. 当战争作为容器启动的一部分进行部署时,将执行使用flyway的数据库迁移。
  5. 本地开发环境采用上述方法,Jenkins管道不断部署Test / Stage环境,并自动运行DB Migrations。

    如果Continuous deployment管道出现故障,我们使用flyway命令行手动运行db migration。

    我们还可以选择使用命令行运行flyway进行生产部署和故障排除。

答案 1 :(得分:0)

您可以设置jenkins作业以自动化飞路迁移。您可以通过两种方式完成此任务。

  1. 通过配置目标和选项来运行
  2.   

    编译flyway:migrate -Dflyway.user =" xxxxx" ...(您的其他选择)......

    1. Jenkins
    2. 上安装Flyway Runner插件

      我更喜欢使用第一个选项,因为您不必在Jenkins盒子上安装任何东西。