small, multi-platform docker images
[dmaap/datarouter.git] / datarouter-prov / pom.xml
index 8e18790..44f70f5 100755 (executable)
@@ -3,6 +3,7 @@
   * org.onap.dmaap\r
   * ===========================================================================\r
   * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+  * Modifications Copyright (C) 2018 Nokia. All rights reserved.\r
   * ===========================================================================\r
   * Licensed under the Apache License, Version 2.0 (the "License");\r
   * you may not use this file except in compliance with the License.\r
@@ -25,7 +26,7 @@
     <parent>\r
         <groupId>org.onap.dmaap.datarouter</groupId>\r
         <artifactId>parent</artifactId>\r
-        <version>1.0.1-SNAPSHOT</version>\r
+        <version>2.0.2-SNAPSHOT</version>\r
         <relativePath>../pom.xml</relativePath>\r
     </parent>\r
     <artifactId>datarouter-prov</artifactId>\r
 \r
         <docker.location>${basedir}/target/${artifactId}</docker.location>\r
         <datarouter.prov.image.name>onap/dmaap/datarouter-prov</datarouter.prov.image.name>\r
+\r
+        <timestamp>${maven.build.timestamp}</timestamp>\r
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>\r
+\r
+        <docker.verbose>true</docker.verbose>\r
+        <docker.apiVersion>1.23</docker.apiVersion>\r
     </properties>\r
     <dependencies>\r
+        <dependency>\r
+            <groupId>xml-apis</groupId>\r
+            <artifactId>xml-apis</artifactId>\r
+            <version>${xml-apis.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.dom4j</groupId>\r
+            <artifactId>dom4j</artifactId>\r
+            <version>${dom4j.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>commons-codec</groupId>\r
+            <artifactId>commons-codec</artifactId>\r
+            <version>${commons-codec.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>com.google.guava</groupId>\r
+            <artifactId>guava</artifactId>\r
+            <version>${google.guava.version}</version>\r
+        </dependency>\r
         <dependency>\r
             <groupId>ch.qos.logback</groupId>\r
             <artifactId>logback-classic</artifactId>\r
-            <version>1.2.0</version>\r
+            <version>${qos.logback.version}</version>\r
             <scope>compile</scope>\r
         </dependency>\r
         <dependency>\r
             <groupId>ch.qos.logback</groupId>\r
             <artifactId>logback-core</artifactId>\r
-            <version>1.2.0</version>\r
+            <version>${qos.logback.version}</version>\r
             <scope>compile</scope>\r
         </dependency>\r
         <dependency>\r
             <groupId>com.thoughtworks.xstream</groupId>\r
             <artifactId>xstream</artifactId>\r
-            <version>1.4.7</version>\r
+            <version>${thoughtworks.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.json</groupId>\r
         <dependency>\r
             <groupId>javax.mail</groupId>\r
             <artifactId>javax.mail-api</artifactId>\r
-            <version>1.5.1</version>\r
+            <version>${javax.mail-api.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>com.att.eelf</groupId>\r
             <artifactId>eelf-core</artifactId>\r
             <version>0.0.1</version>\r
         </dependency>\r
-        <dependency>\r
-            <groupId>javax.servlet</groupId>\r
-            <artifactId>servlet-api</artifactId>\r
-            <version>2.5</version>\r
-        </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-server</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-continuation</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-util</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-deploy</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-servlet</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-servlets</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-http</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-security</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-websocket</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.websocket.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-io</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.apache.commons</groupId>\r
         <dependency>\r
             <groupId>org.eclipse.jetty.cdi</groupId>\r
             <artifactId>cdi-websocket</artifactId>\r
-            <version>9.3.11.v20160721</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>log4j</groupId>\r
             <version>1.2.17</version>\r
             <scope>compile</scope>\r
         </dependency>\r
+        <dependency>\r
+            <groupId>com.h2database</groupId>\r
+            <artifactId>h2</artifactId>\r
+            <version>1.4.197</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.hibernate</groupId>\r
+            <artifactId>hibernate-entitymanager</artifactId>\r
+            <version>5.2.9.Final</version>\r
+            <exclusions>\r
+                <exclusion>\r
+                    <groupId>dom4j</groupId>\r
+                    <artifactId>dom4j</artifactId>\r
+                </exclusion>\r
+            </exclusions>\r
+        </dependency>\r
     </dependencies>\r
     <profiles>\r
         <profile>\r
             </properties>\r
             <build>\r
                 <plugins>\r
+\r
+                    <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging -->\r
+                    <plugin>\r
+                      <groupId>org.codehaus.groovy.maven</groupId>\r
+                      <artifactId>gmaven-plugin</artifactId>\r
+                      <executions>\r
+                          <execution>\r
+                              <phase>validate</phase>\r
+                              <goals>\r
+                                  <goal>execute</goal>\r
+                              </goals>\r
+                              <configuration>\r
+                                  <properties>\r
+                                      <ver>${project.version}</ver>\r
+                                      <timestamp>${maven.build.timestamp}</timestamp>\r
+                                  </properties>\r
+                                  <source>\r
+                                      println 'ver: ' + project.properties['ver'];\r
+                                      if ( project.properties['ver'].endsWith("-SNAPSHOT") ) {\r
+                                          project.properties['dockertag1']=project.properties['ver'] + "-latest";\r
+                                          project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp'];\r
+                                      } else {\r
+                                          project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest";\r
+                                          project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp'];\r
+                                      }\r
+                                      println 'docker tag 1: ' + project.properties['dockertag1'];\r
+                                      println 'docker tag 2: ' + project.properties['dockertag2'];\r
+                                  </source>\r
+                              </configuration>\r
+                          </execution>\r
+                      </executions>\r
+                    </plugin>\r
                     <plugin>\r
-                        <groupId>com.spotify</groupId>\r
+                        <groupId>io.fabric8</groupId>\r
                         <artifactId>docker-maven-plugin</artifactId>\r
-                        <version>1.0.0</version>\r
+                        <version>0.28.0</version>\r
                         <configuration>\r
-                            <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}</imageName>\r
-                            <dockerDirectory>${docker.location}</dockerDirectory>\r
-                            <serverId>${onap.nexus.dockerregistry.daily}</serverId>\r
-                            <skipDockerBuild>false</skipDockerBuild>\r
-                            <imageTags>\r
-                                <imageTag>${project.version}</imageTag>\r
-                                <imageTag>latest</imageTag>\r
-                            </imageTags>\r
-                            <forceTags>true</forceTags>\r
-                            <resources>\r
-                                <resource>\r
-                                    <targetPath>/</targetPath>\r
-                                    <directory>${project.basedir}</directory>\r
-                                    <excludes>\r
-                                        <exclude>target/**/*</exclude>\r
-                                        <exclude>pom.xml</exclude>\r
-                                    </excludes>\r
-                                </resource>\r
-\r
-                                <resource>\r
-                                    <targetPath>/</targetPath>\r
-                                    <directory>${project.build.directory}</directory>\r
-                                    <include>**/**</include>\r
-                                </resource>\r
-                            </resources>\r
+                            <verbose>${docker.verbose}</verbose>\r
+                            <apiVersion>${docker.apiVersion}</apiVersion>\r
+                            <pullRegistry>${docker.pull.registry}</pullRegistry>\r
+                            <pushRegistry>${docker.push.registry}</pushRegistry>\r
+                            <images>\r
+                                <image>\r
+                                    <name>${datarouter.prov.image.name}</name>\r
+                                    <build>\r
+                                        <cleanup>try</cleanup>\r
+                                        <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>\r
+                                        <dockerFile>Dockerfile</dockerFile>\r
+                                        <tags>\r
+                                            <tag>${dockertag1}</tag>\r
+                                            <tag>${dockertag2}</tag>\r
+                                        </tags>\r
+                                    </build>\r
+                                </image>\r
+                            </images>\r
                         </configuration>\r
+                         <executions>\r
+                             <execution>\r
+                                 <id>generate-images</id>\r
+                                 <phase>install</phase>\r
+                                 <goals>\r
+                                     <goal>build</goal>\r
+                                 </goals>\r
+                             </execution>\r
+                             <execution>\r
+                                 <id>push-images</id>\r
+                                 <phase>deploy</phase>\r
+                                 <goals>\r
+                                     <goal>push</goal>\r
+                                 </goals>\r
+                             </execution>\r
+                         </executions>\r
                     </plugin>\r
                 </plugins>\r
             </build>\r
                 <directory>src/main/resources</directory>\r
                 <filtering>true</filtering>\r
                 <includes>\r
-                    <include>**/proserver.properties</include>\r
+                    <include>**/provserver.properties</include>\r
                 </includes>\r
             </resource>\r
             <resource>\r
                     <descriptorRefs>\r
                         <descriptorRef>jar-with-dependencies</descriptorRef>\r
                     </descriptorRefs>\r
-                    <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>\r
+                    <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/lib</outputDirectory>\r
                     <archive>\r
                         <manifest>\r
                             <addClasspath>true</addClasspath>\r
                 </configuration>\r
                 <version>3.6.0</version>\r
             </plugin>\r
+\r
+            <!-- Copy files to docker-stage to be included in image -->\r
             <plugin>\r
                 <artifactId>maven-resources-plugin</artifactId>\r
                 <version>2.7</version>\r
                 <executions>\r
                     <execution>\r
-                        <id>copy-docker-file</id>\r
-                        <phase>package</phase>\r
+                        <id>copy-dockerfile</id>\r
+                        <phase>validate</phase>\r
                         <goals>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${docker.location}</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>\r
                             <overwrite>true</overwrite>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/src/main/resources/docker</directory>\r
                                     <filtering>true</filtering>\r
                                     <includes>\r
-                                        <include>**/*</include>\r
+                                        <include>Dockerfile</include>\r
                                     </includes>\r
                                 </resource>\r
                             </resources>\r
                         </configuration>\r
                     </execution>\r
                     <execution>\r
-                        <id>copy-resources-1</id>\r
+                        <id>copy-startup-script</id>\r
                         <phase>validate</phase>\r
                         <goals>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt</outputDirectory>\r
+                            <overwrite>true</overwrite>\r
                             <resources>\r
                                 <resource>\r
-                                    <directory>${project.basedir}/src/main/resources</directory>\r
+                                    <directory>${basedir}/src/main/resources/docker</directory>\r
+                                    <filtering>true</filtering>\r
                                     <includes>\r
-                                        <include>**/*.jar</include>\r
+                                        <include>startup.sh</include>\r
                                     </includes>\r
                                 </resource>\r
                             </resources>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/etc</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/etc</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/src/main/resources</directory>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/data</directory>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/self_signed</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
-                                    <directory>${basedir}/self_signed</directory>\r
+                                    <directory>${basedir}/aaf_certs</directory>\r
                                     <includes>\r
                                         <include>misc/**</include>\r
                                         <include>**/**</include>\r
                             <goal>copy-dependencies</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${project.build.directory}/opt/app/datartr/lib</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>\r
                             <overWriteReleases>false</overWriteReleases>\r
                             <overWriteSnapshots>false</overWriteSnapshots>\r
                             <overWriteIfNewer>true</overWriteIfNewer>\r