我正在将FlyWay集成到该项目中。除了对工作数据库的迁移之外,我还想在gitlab管道作业期间为集成测试设置数据库(仅用于某些人推送分支的情况)。
项目上使用的是MariaDB,所以我现在正在考虑这样的方法:添加H2数据库,为其创建带有测试夹具的迁移。因此,对于prod/暂存/dev,将使用MariadDb及其迁移,但在gitlab管道上的一个作业中,临时使用的是带有测试夹具的H2。
所以我对此有几个问题:
FlyWay能否以这样的方式配置,以处理不同的数据库?首先连接到H@,然后应用测试迁移,然后在测试步骤之后切换到Maria,并在其上应用基本迁移。发布于 2022-11-18 09:24:09
这是一种方法,还是可以做得更简单?
最简单的解决方案是将gitlab中的CI作业配置为使用MariaDB服务。这将保证您的测试将在与生产代码相同的环境中执行。(请看这里:https://docs.gitlab.com/ee/ci/services/mysql.html)
另一种替代方法是配置测试容器(https://www.testcontainers.org/)。它允许您在测试设置期间启动空db。然而,根据我的经验,有时会有问题,因为它取决于码头,所以你在"DIND模式“工作。
FlyWay能否以这样的方式配置,以处理不同的数据库?
您可以配置Flyway,根据您喜欢的任何东西(例如,数据库驱动程序)运行不同的迁移脚本集。然而,它需要一些手动配置和代码编写来处理它,如果在您的测试(或生产)中希望使用不同的数据库(例如,您希望测试代码是否与postgres和mariadb一起工作),则非常有用。
我在文档中发现了如何依赖占位符来运行迁移。
原则上,您应该有不同的测试和prod配置,这样就可以轻松地将其分离。不同的application.properties应该就足够了,但是您可以使用FlyWay环境。
https://stackoverflow.com/questions/74486602
复制相似问题