diff options
-rw-r--r-- | champ-service/pom.xml | 172 | ||||
-rw-r--r-- | champ-service/src/main/assembly/descriptor.xml | 50 | ||||
-rw-r--r-- | champ-service/src/main/docker/Dockerfile | 21 |
3 files changed, 171 insertions, 72 deletions
diff --git a/champ-service/pom.xml b/champ-service/pom.xml index 4fa66b7..f2b8463 100644 --- a/champ-service/pom.xml +++ b/champ-service/pom.xml @@ -33,8 +33,6 @@ limitations under the License. <artifactId>champ-service</artifactId> <properties> - <docker.location>${basedir}/target</docker.location> - <docker.name>champ</docker.name> <onap.nexus.url>https://nexus.onap.org</onap.nexus.url> <common.logging.groupid>org.onap.aai.logging-service</common.logging.groupid> <common.logging.version>1.2.2</common.logging.version> @@ -45,6 +43,18 @@ limitations under the License. <!-- Minimum code coverage percentage. Please update this figure as coverage increases to prevent any drops in coverage caused by new changes. Note that this figure cannot be lower than the ONAP requirement of 0.55 --> <jacoco.line.coverage.limit>0.16</jacoco.line.coverage.limit> + + <!-- docker related properties --> + <docker.image.name>champ</docker.image.name> + <docker.fabric.version>0.28.0</docker.fabric.version> + <aai.docker.version>1.0.0</aai.docker.version> + <aai.build.directory>${project.build.directory}/${project.artifactId}-build/ + </aai.build.directory> + <aai.docker.namespace>onap</aai.docker.namespace> + <aai.base.image>alpine</aai.base.image> + <aai.base.image.version>1.6.0</aai.base.image.version> + <!-- This will be used for the docker images as the default format of maven build has issues --> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> </properties> <dependencyManagement> @@ -123,15 +133,14 @@ limitations under the License. <version>3.22.0-GA</version> </dependency> - <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> </exclusions> </dependency> @@ -153,9 +162,9 @@ limitations under the License. <version>2.6.2</version> </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> </dependency> <dependency> @@ -279,44 +288,19 @@ limitations under the License. </plugin> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <version>2.7</version> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/descriptor.xml</descriptor> + </descriptors> + </configuration> <executions> <execution> - <id>copy-docker-file</id> + <id>make-assembly</id> <phase>package</phase> <goals> - <goal>copy-resources</goal> + <goal>single</goal> </goals> - <configuration> - <outputDirectory>target</outputDirectory> - <overwrite>true</overwrite> - <resources> - <resource> - <directory>${basedir}/src/main/docker</directory> - <filtering>true</filtering> - <includes> - <include>**/*</include> - </includes> - </resource> - <resource> - <directory>${basedir}/src/main/bin/</directory> - </resource> - <resource> - <directory>../champ-service-deps-janus/target/</directory> - </resource> - <resource> - <directory>../champ-service-deps-titan/target/</directory> - </resource> - <resource> - <directory>${basedir}</directory> - <includes> - <include>**/dynamic/**/*</include> - </includes> - </resource> - </resources> - </configuration> </execution> </executions> </plugin> @@ -361,26 +345,104 @@ limitations under the License. <build> <plugins> <plugin> - <groupId>com.spotify</groupId> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>3.0.0</version> + <executions> + <execution> + <phase>pre-clean</phase> + <id>parse-version</id> + <goals> + <goal>parse-version</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <phase>pre-clean</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + def userAaiBaseImage = session.userProperties['aai.base.image'] + def userAaiCommonVersion = session.userProperties['aai.base.image.version'] + if (userAaiCommonVersion != null) { + project.properties['aai.base.image.version'] = userAaiCommonVersion + } + if (userAaiBaseImage != null) { + project.properties['aai.base.image'] = userAaiBaseImage + } + log.info 'Base image flavour: ' + project.properties['aai.base.image'] + log.info 'Base image version: ' + project.properties['aai.base.image.version'] + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> - <version>0.4.11</version> + <version>${docker.fabric.version}</version> <configuration> <verbose>true</verbose> - <serverId>docker-hub</serverId> - <imageName>${docker.push.registry}/onap/${docker.name}</imageName> - <dockerDirectory>${docker.location}</dockerDirectory> - <imageTags> - <imageTag>latest</imageTag> - </imageTags> - <forceTags>true</forceTags> + <apiVersion>1.23</apiVersion> + <images> + <image> + <name>${docker.push.registry}/${aai.docker.namespace}/${docker.image.name}:%l + </name> + <build> + <filter>@</filter> + <tags> + <tag>latest</tag> + <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag> + <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-${maven.build.timestamp}</tag> + </tags> + <cleanup>try</cleanup> + <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir> + <assembly> + <inline> + <fileSets> + <fileSet> + <directory>${aai.build.directory}</directory> + <outputDirectory>/${project.artifactId}</outputDirectory> + </fileSet> + </fileSets> + </inline> + </assembly> + </build> + </image> + </images> </configuration> <executions> <execution> - <id>default</id> + <id>clean-images</id> + <phase>pre-clean</phase> + <goals> + <goal>remove</goal> + </goals> + <configuration> + <removeAll>true</removeAll> + </configuration> + </execution> + <execution> + <id>generate-images</id> <phase>package</phase> <goals> <goal>build</goal> - </goals> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> </execution> </executions> </plugin> @@ -388,6 +450,4 @@ limitations under the License. </build> </profile> </profiles> - - </project> diff --git a/champ-service/src/main/assembly/descriptor.xml b/champ-service/src/main/assembly/descriptor.xml new file mode 100644 index 0000000..886ddae --- /dev/null +++ b/champ-service/src/main/assembly/descriptor.xml @@ -0,0 +1,50 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+ <id>build</id>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <formats>
+ <format>dir</format>
+ </formats>
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}/src/main/bin</directory>
+ <outputDirectory>/bin</outputDirectory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}</directory>
+ <outputDirectory>/</outputDirectory>
+ <includes>
+ <include>**/dynamic/**/*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../champ-service-deps-janus/target/</directory>
+ <outputDirectory>/</outputDirectory>
+ <includes>
+ <include>**/graph-deps/**/*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../champ-service-deps-titan/target/</directory>
+ <outputDirectory>/</outputDirectory>
+ <includes>
+ <include>**/graph-deps/**/*</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.build.directory}</directory>
+ <outputDirectory>/</outputDirectory>
+ <includes>
+ <include>*.jar</include>
+ </includes>
+ <excludes>
+ <exclude>Dockerfile</exclude>
+ <exclude>*.sh</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
+</assembly>
diff --git a/champ-service/src/main/docker/Dockerfile b/champ-service/src/main/docker/Dockerfile index 79791d8..df0ef2d 100644 --- a/champ-service/src/main/docker/Dockerfile +++ b/champ-service/src/main/docker/Dockerfile @@ -1,26 +1,15 @@ -FROM ubuntu:14.04 +FROM @aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@ ARG MICRO_HOME=/opt/app/champ-service ARG BIN_HOME=$MICRO_HOME/bin ARG GRAPHLIB_HOME=$MICRO_HOME/graph-deps -RUN apt-get update - -# Install and setup java8 -RUN apt-get update && apt-get install -y software-properties-common -RUN sudo -E add-apt-repository ppa:openjdk-r/ppa && apt-get update && apt-get install -y openjdk-8-jdk -ENV JAVA_HOME usr/lib/jvm/java-8-openjdk-amd64 -RUN export JAVA_HOME - # Build up the deployment folder structure RUN mkdir -p $MICRO_HOME -COPY champ-service.jar $MICRO_HOME/ -RUN mkdir -p $GRAPHLIB_HOME -ADD graph-deps $GRAPHLIB_HOME -RUN mkdir -p $BIN_HOME -COPY *.sh $BIN_HOME -RUN chmod 755 $BIN_HOME/* -RUN ln -s /logs $MICRO_HOME/logs +WORKDIR $MICRO_HOME +COPY /maven/champ-service/ . +RUN chmod 755 $BIN_HOME/* \ + && ln -snf /logs $MICRO_HOME/logs EXPOSE 9522 9522 |