我正在将FlyWay
集成到项目中。除了迁移工作数据库,我想在gitlab管道作业期间设置数据库与集成测试的fixture(只是在有人推动分支的情况下)。
在项目上使用MariaDB
,所以我现在正在考虑这样的方式:添加H2
数据库,为它创建带有测试fixture的迁移。因此,对于prod/staging/dev将使用MariadDb
及其迁移,但在gitlab管道上的一个作业临时将使用H2
与测试fixture。
关于这个我有几个问题:
- 这是一种方法,还是可以做到"更简单"?
FlyWay
可以这样配置吗数据库?首先连接到H@,应用测试迁移,然后在测试步骤之后切换到Maria并在其上应用基本迁移- 我在文档中发现如何依赖占位符运行迁移。这是使FlyWay区分产品的单一方法吗从迁移到测试的迁移?
这是一种接近方式,还是可以做到'更简单'?
最简单的解决方案是在gitlab中配置CI作业以使用MariaDB服务。这将保证您的测试将在与生产代码相同的环境中执行。(看看这里:https://docs.gitlab.com/ee/ci/services/mysql.html)
另一个替代方法是配置testcontainers (https://www.testcontainers.org/)。它允许您在测试设置期间启动空db。然而,根据我的经验,有时会有问题,因为它取决于docker,所以你在"ddd模式"下工作。
FlyWay可以这样配置工作与不同的数据库吗?
你可以配置Flyway,这样你就可以运行不同的迁移脚本集,这取决于你喜欢什么(例如数据库驱动程序)。然而,它需要一些手动配置和代码编写来处理它,如果在测试(或生产)中你想使用不同的数据库(例如,你想测试你的代码是否与postgres和mariadb一起工作),它是有用的
我在文档中发现如何依赖占位符来运行迁移。
原则上,你应该对测试和刺激有不同的配置,这样你就可以很容易地把它们分开。不同的application.properties
应该足够了,但你可以使用FlyWay环境。