来自Martin Fowler的这篇优秀article:
构建成功完成后,CI服务器将构建工件打包并发布它们。这些构建工件包含数据库迁移脚本,因此它们可以应用于下游环境中的数据库(...)
我的问题是如何在实践中实现基于Java的工作流程?构建工件通常是.war,.jar或.ear文件,并发布到Nexus,Archiva或Artifactory服务器。迁移脚本是否可以包含在这些工件中,以便可以在不对目标环境进行任何修改的情况下执行迁移?可以使用像Flyway或Liquibase这样的工具吗?
答案 0 :(得分:0)
是的!我们(Flyway)强烈建议您将迁移打包到您的应用程序并在启动时运行它们。这样,您可以确保数据库始终包含应用程序当前版本所需的对象(表,视图,存储过程......)。
答案 1 :(得分:0)
我们使用maven来构建人工制品,我们在src / main / resources / db / migration文件夹下有flyway迁移脚本。
App是一个弹簧网络应用程序,在春季容器启动期间,它运行Flyway迁移。如果出现问题,应用程序永远不会启动。
这样我们就可以确保数据库状态是应用启动时所需要的。