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 で実行され、postgres
ユーザーのパスワードが admin
に設定された postgres コンテナが pod に追加されます。この 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://: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://: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