我正在尝试设置gitlab ci运行程序以在内存数据库中的h2上运行我的测试。在本地没有问题,一切正常。我已经创建了.gitlab-ci.yml文件来也在gitlab上运行构建和测试,但是我只是不知道如何在内存数据库中建立连接。
首先是我的application-test.properties文件。
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
我的h2数据库还运行flyway脚本。它现在运行一个创建所有表的脚本。另外还有beforeValidate.sql脚本和afterMigrate.sql脚本,它们添加了一些通用数据。
我阅读了很多文章,发现可以从Java代码运行tcp服务器。为此,我用一种方法创建了TestConfig java类。
@Bean(initMethod = "start", destroyMethod = "stop")
public Server inMemoryH2DatabaseaServer() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers").start();
}
我所有的测试均导入此类。因为这只是使用 @Import(TestConfig.class)
最后,我的.gitlab-ci.yml文件:
image: maven:3.3.9
variables:
POSTGRES_DB: testdb
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
POSTGRES_USER: sa
POSTGRES_PASSWORD: password
services:
- postgres:latest
build:
stage: build
script: "mvn compile"
test:
stage: test
script: "mvn clean test"
当gitlab使用内存数据库运行我的测试时,它会抛出:
到localhost:5432的连接被拒绝。检查主机名和端口是否正确以及邮局主管正在接受TCP / IP连接。
我看到的问题:
我的问题:
我认为,如果仅从实体创建架构,它将毫无问题地工作,但是我也在我们的开发环境中使用flyway,所以我想以相同的方式创建所有对象。
感谢您的帮助。我已经读了很多文章,但是在上网搜索了许多小时之后,我不知道如何解决这个问题。这听起来像是一个普遍的问题,但是互联网表明不是,或者我找不到它。
感谢帮助!