mirror of https://github.com/apache/druid.git
232 lines
12 KiB
XML
232 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
|
~ or more contributor license agreements. See the NOTICE file
|
|
~ distributed with this work for additional information
|
|
~ regarding copyright ownership. The ASF licenses this file
|
|
~ to you under the Apache License, Version 2.0 (the
|
|
~ "License"); you may not use this file except in compliance
|
|
~ with the License. You may obtain a copy of the License at
|
|
~
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
~
|
|
~ Unless required by applicable law or agreed to in writing,
|
|
~ software distributed under the License is distributed on an
|
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
~ KIND, either express or implied. See the License for the
|
|
~ specific language governing permissions and limitations
|
|
~ under the License.
|
|
-->
|
|
|
|
<!--
|
|
Builds the Docker image used for integration testing.
|
|
|
|
* Removes the image in the clean phase.
|
|
* Uses the Druid build from the distribution project.
|
|
* Assembles the set of needed files in the compile phase.
|
|
* Builds the Docker image in the install phase.
|
|
|
|
If you have already built Druid up to the distribution install phase,
|
|
then this project can be run over and over if you need to debug
|
|
changes to the image.
|
|
|
|
Reference: https://dzone.com/articles/build-docker-image-from-maven
|
|
-->
|
|
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<packaging>pom</packaging>
|
|
|
|
<artifactId>it-image</artifactId>
|
|
<name>it-image</name>
|
|
<description>Build the Docker image for integration tests.</description>
|
|
|
|
<parent>
|
|
<artifactId>druid</artifactId>
|
|
<groupId>org.apache.druid</groupId>
|
|
<version>0.24.0-SNAPSHOT</version>
|
|
<relativePath>../../pom.xml</relativePath>
|
|
</parent>
|
|
|
|
<properties>
|
|
<!-- Default image name when run locally. When run as part of a build, the
|
|
image name will typically be provided by the build enfironment, and will
|
|
override this default name. -->
|
|
<druid.it.image-name>${project.groupId}/test:${project.version}</druid.it.image-name>
|
|
<confluent-version>5.5.1</confluent-version>
|
|
<mariadb.version>2.7.3</mariadb.version>
|
|
<mysql.image.version>5.7-debian</mysql.image.version>
|
|
<hadoop.integ.libs>"org.apache.hadoop:hadoop-client:${hadoop.compile.version}", "org.apache.hadoop:hadoop-azure:${hadoop.compile.version}"</hadoop.integ.libs>
|
|
<hadoop.s3.impl>org.apache.hadoop.fs.s3native.NativeS3FileSystem</hadoop.s3.impl>
|
|
</properties>
|
|
|
|
<repositories>
|
|
<!-- For the Kafka protobuf provider. -->
|
|
<repository>
|
|
<id>confluent</id>
|
|
<name>Confluent</name>
|
|
<url>https://packages.confluent.io/maven/</url>
|
|
</repository>
|
|
</repositories>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>test-image</id>
|
|
<activation>
|
|
<activeByDefault>false</activeByDefault>
|
|
</activation>
|
|
|
|
<!-- Dependencies are inside the profile so they are ignored if not building
|
|
the image. This is required for the "animal-sniffer" stage in the build
|
|
which builds everything except distribution, so our distribution dependency
|
|
fails if not scoped wihtin the profile. -->
|
|
<dependencies>
|
|
<!-- Dependencies placed in the image. -->
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>distribution</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
<type>pom</type>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>it-tools</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.confluent</groupId>
|
|
<artifactId>kafka-protobuf-provider</artifactId>
|
|
<version>${confluent-version}</version>
|
|
</dependency>
|
|
<!-- Tests can choose either the MySQL or MariaDB driver. -->
|
|
<dependency>
|
|
<groupId>mysql</groupId>
|
|
<artifactId>mysql-connector-java</artifactId>
|
|
<version>${mysql.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mariadb.jdbc</groupId>
|
|
<artifactId>mariadb-java-client</artifactId>
|
|
<version>${mariadb.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<plugins>
|
|
<!-- Populate the target/docker directory with the MySQL
|
|
and Kafka clients. -->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<version>3.3.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>copy</id>
|
|
<phase>prepare-package</phase>
|
|
<goals>
|
|
<goal>copy</goal>
|
|
</goals>
|
|
<configuration>
|
|
<artifactItems>
|
|
<artifactItem>
|
|
<groupId>mysql</groupId>
|
|
<artifactId>mysql-connector-java</artifactId>
|
|
<version>${mysql.version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/docker</outputDirectory>
|
|
</artifactItem>
|
|
<artifactItem>
|
|
<groupId>org.mariadb.jdbc</groupId>
|
|
<artifactId>mariadb-java-client</artifactId>
|
|
<version>${mariadb.version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/docker</outputDirectory>
|
|
</artifactItem>
|
|
<artifactItem>
|
|
<groupId>io.confluent</groupId>
|
|
<artifactId>kafka-protobuf-provider</artifactId>
|
|
<version>${confluent-version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/docker</outputDirectory>
|
|
</artifactItem>
|
|
<artifactItem>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>it-tools</artifactId>
|
|
<version>${project.version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/docker</outputDirectory>
|
|
</artifactItem>
|
|
</artifactItems>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<executions>
|
|
|
|
<!-- Remove existing image from local repo -->
|
|
<execution>
|
|
<id>docker-clean</id>
|
|
<phase>clean</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<executable>docker</executable>
|
|
<workingDirectory>${project.basedir}</workingDirectory>
|
|
<arguments>
|
|
<argument>rmi</argument>
|
|
<argument>-f</argument> <!-- Prevent error if no image. -->
|
|
<argument>${druid.it.image-name}</argument>
|
|
</arguments>
|
|
</configuration>
|
|
</execution>
|
|
|
|
<!-- Create the docker image via a script which will also grab
|
|
the distribution tarball. -->
|
|
<execution>
|
|
<id>build-image</id>
|
|
<phase>install</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<environmentVariables>
|
|
<DRUID_VERSION>${project.version}</DRUID_VERSION>
|
|
<MYSQL_VERSION>${mysql.version}</MYSQL_VERSION>
|
|
<MYSQL_IMAGE_VERSION>${mysql.image.version}</MYSQL_IMAGE_VERSION>
|
|
<MARIADB_VERSION>${mariadb.version}</MARIADB_VERSION>
|
|
<KAFKA_VERSION>${apache.kafka.version}</KAFKA_VERSION>
|
|
<CONFLUENT_VERSION>${confluent-version}</CONFLUENT_VERSION>
|
|
<ZK_VERSION>${zookeeper.version}</ZK_VERSION>
|
|
<HADOOP_VERSION>${hadoop.compile.version}</HADOOP_VERSION>
|
|
<MYSQL_DRIVER_CLASSNAME>com.mysql.jdbc.Driver</MYSQL_DRIVER_CLASSNAME>
|
|
<DRUID_IT_IMAGE_NAME>${druid.it.image-name}</DRUID_IT_IMAGE_NAME>
|
|
<TARGET_DIR>${project.build.directory}</TARGET_DIR>
|
|
<!-- Maven has no good way to get the root directory, so
|
|
this is as close as we can get. -->
|
|
<PARENT_DIR>${project.basedir}/../..</PARENT_DIR>
|
|
</environmentVariables>
|
|
<workingDirectory>${project.basedir}</workingDirectory>
|
|
<executable>bash</executable>
|
|
<arguments>
|
|
<argument>build-image.sh</argument>
|
|
</arguments>
|
|
</configuration>
|
|
</execution>
|
|
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|