DBZ-23 Simplified PosgreSQL Connector's use of Docker plugin

This commit is contained in:
Randall Hauch 2016-02-25 10:24:52 -06:00
parent 42e531dbe9
commit 046fc83850
2 changed files with 83 additions and 13 deletions

View File

@ -20,16 +20,32 @@
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>connect-api</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
</dependency> </dependency>
<!-- Testing --> <!-- Testing -->
<dependency> <dependency>
<groupId>io.debezium</groupId> <groupId>io.debezium</groupId>
<artifactId>debezium-core</artifactId> <artifactId>debezium-core</artifactId>
<type>test-jar</type> <type>test-jar</type>
</dependency> </dependency>
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-embedded</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-embedded</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId> <artifactId>slf4j-log4j12</artifactId>
@ -56,12 +72,17 @@
<database.port>5432</database.port> <database.port>5432</database.port>
<database.user>postgres</database.user> <database.user>postgres</database.user>
<database.password>postgres</database.password> <database.password>postgres</database.password>
<!--
By default, we should use the default Docker image. This propery is changed with different profiles.
-->
<docker.image>postgres:${version.postgresql.server}</docker.image>
<docker.skip>false</docker.skip>
</properties> </properties>
<build> <build>
<plugins> <plugins>
<!-- Build a Docker image of our PostgreSQL installation, and run it as a container for our integration tests --> <!-- Build a Docker image of our PostgreSQL installation, and run it as a container for our integration tests -->
<plugin> <plugin>
<groupId>org.jolokia</groupId> <groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId> <artifactId>docker-maven-plugin</artifactId>
<configuration> <configuration>
<watchInterval>500</watchInterval> <watchInterval>500</watchInterval>
@ -70,21 +91,16 @@
<autoPull>always</autoPull> <autoPull>always</autoPull>
<images> <images>
<image> <image>
<name>debezium-pg94-server</name> <name>postgres:${version.postgresql.server}</name>
<alias>database</alias> <alias>database</alias>
<build>
<assembly>
<basedir>/docker-entrypoint-initdb.d</basedir>
<dockerFileDir>${project.basedir}/src/test/docker</dockerFileDir>
</assembly>
</build>
<run> <run>
<namingStrategy>alias</namingStrategy> <namingStrategy>alias</namingStrategy>
<!--volumes> <volumes>
<bind> <bind>
<volume>${project.basedir}/src/test/docker/init:/docker-entrypoint-initdb.d</volume>
<volume>${project.build.directory}/data:/var/lib/postgresql/data</volume> <volume>${project.build.directory}/data:/var/lib/postgresql/data</volume>
</bind> </bind>
</volumes--> </volumes>
<env> <env>
<POSTGRES_USER>${database.user}</POSTGRES_USER> <POSTGRES_USER>${database.user}</POSTGRES_USER>
<POSTGRES_PASSWORD>${database.password}</POSTGRES_PASSWORD> <POSTGRES_PASSWORD>${database.password}</POSTGRES_PASSWORD>
@ -150,13 +166,15 @@
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<skipTests>${skipITs</skipTests> <skipTests>${skipITs}</skipTests>
<enableAssertions>true</enableAssertions>
<systemPropertyVariables> <systemPropertyVariables>
<!-- Make these available to the tests via system properties --> <!-- Make these available to the tests via system properties -->
<database.hostname>${docker.host.address}</database.hostname> <database.hostname>${docker.host.address}</database.hostname>
<database.port>${database.port}</database.port> <database.port>${database.port}</database.port>
<database.user>${database.user}</database.user> <database.user>${database.user}</database.user>
<database.password>${database.password}</database.password> <database.password>${database.password}</database.password>
<skipLongRunningTests>${skipLongRunningTests}</skipLongRunningTests>
</systemPropertyVariables> </systemPropertyVariables>
</configuration> </configuration>
</plugin> </plugin>
@ -183,4 +201,55 @@
</testResource> </testResource>
</testResources> </testResources>
</build> </build>
<!--
Define several useful profiles
-->
<profiles>
<profile>
<id>assembly</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<attach>true</attach> <!-- we want attach & deploy these to Maven -->
<descriptorRefs>
<descriptorRef>connector-distribution</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do not perform any Docker-related functionality
To use, specify "-DskipITs" on the Maven command line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<profile>
<id>skip-integration-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>skipITs</name>
</property>
</activation>
<properties>
<docker.skip>true</docker.skip>
</properties>
</profile>
</profiles>
</project> </project>

View File

@ -54,6 +54,7 @@
<!-- Databases --> <!-- Databases -->
<version.postgresql.driver>9.4-1205-jdbc42</version.postgresql.driver> <version.postgresql.driver>9.4-1205-jdbc42</version.postgresql.driver>
<version.postgresql.server>9.4</version.postgresql.server>
<version.mysql.server>5.7</version.mysql.server> <version.mysql.server>5.7</version.mysql.server>
<version.mysql.driver>5.1.37</version.mysql.driver> <version.mysql.driver>5.1.37</version.mysql.driver>
<version.mysql.binlog>0.2.4</version.mysql.binlog> <version.mysql.binlog>0.2.4</version.mysql.binlog>