Jenkins Kubernetes 插件
使用 Jenkins Kubernetes 插件,我们可以为我们想要使用的数据库容器添加一个 containerTemplate()
。
containerTemplate
为 postgres 添加一个类似于下面的 containerTemplate
条目
containerTemplate(args: '-p 6432', name: 'postgres12', image: 'postgres:12',
envVars: [containerEnvVar(key: 'POSTGRES_PASSWORD', value: 'admin')]
)
这会向运行在端口 6432 上的 pod 添加一个 postgres 容器,其中 postgres
用户的密码设置为 admin
。此 postgres 实例随后将在 localhost:6432
上可用。
pg_isready
我们添加一个使用 pg_isready
的代码块,以便在构建和运行测试之前等待 postgres 准备就绪。
container('postgres12') {
print "wait for postgres ready"
sh('pg_isready -t 60 -h localhost -p 6432')
print "postgres ready now, continue"
}
当 ebean-test 启动时,它将使用 postgres:admin 用户名和密码建立一个 JDBC 连接,并将使用此连接创建数据库、角色并根据需要添加扩展。
日志
在测试实际运行之前的日志中,我们看到 ebean-test 连接到 jdbc:postgresql://localhost:6432
并运行 sql 以创建运行测试所需的数据库、角色和扩展。
INFO ?. io.ebean.EbeanVersion - ebean version: 13.25.0
INFO ?. io.ebean.config.properties.LoadContext - loaded properties from [application.properties, application-test.yaml]
INFO ?. io.ebean.test.config.platform.Config - Using jdbc settings - username:my_app url:jdbc:postgresql://localhost:6432/my_app driver:org.postgresql.Driver
TRACE ?. io.ebean.docker.commands.Commands - sqlRun: select 1 from pg_database where datname = 'my_app'
TRACE ?. io.ebean.docker.commands.Commands - sqlRun: select rolname from pg_roles where rolname = 'my_app'
DEBUG ?. io.ebean.docker.commands.Commands - sqlRun: create role my_app password 'test' login createrole
DEBUG ?. io.ebean.docker.commands.Commands - sqlRun: create database my_app with owner my_app
DEBUG ?. io.ebean.docker.commands.Commands - sqlRun: create extension if not exists hstore
DEBUG ?. io.ebean.docker.commands.Commands - sqlRun: create extension if not exists pgcrypto
DEBUG ?. io.ebean.docker.commands.Commands - Container ut_postgres ready with port 6432