我是Flyway的新手。我非常喜欢它,并且我即将把它集成到我们的Java工作区中。然而,在规划这些迁移的实际发布过程时,我需要一点“推”。据迁飞的文档我的如何在Java应用程序的连续发布过程中使用Flyway?
- 分发的.sql文件列表或
- 分配打包成一个JAR归档SQL和Java文件的列表选择。
我想尝试第二个选项,因为它给了我们更多的灵活性,听起来我可以简单地将迁移脚本作为资源包含在可执行文件的jar文件中。然而,由于我们在连续发布过程中经常提供数据库更改,因此我发现该jar文件最终被大量脚本文件污染。而且,在使用Ant创建jar文件时,Ant会将每个文件的名称放入清单的类路径中,这会使清单变得混乱。
考虑到这些问题,对于那些你在生产中使用迁飞路线:
什么是分布迁移脚本的推荐的方法?你把所有的人都放进一个罐子里,然后把它传递给服务器上的flyway吗?或者,每次发布时,是否使用批处理文件将所有脚本复制到服务器?谢谢你的建议。
我喜欢把这个任务委托给构建服务器的方法。但是,这不需要构建服务器连接到客户的服务器并直接更改客户的生产数据库(包括推出最新的应用程序代码)吗?在我的场景中,构建服务器只做构建和测试,稍后将作为单独的任务进行交付或部署。 – Wombat
因此,我们在我们的cert和prod域中使用单独的作业来迁移数据库并进行模式更改。这项工作不同于建立和推出最新应用程序代码的正常Jenkins工作。我们将其分开,因为有时我们可能必须在将新的jar放入cert(或prod)之前运行迁移,并且有时我们必须在发布之后执行迁移,无论哪种方式的责任分离对我们来说迄今为止都工作得很好。希望这回答你的问题。 – Vydruth