diff options
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | dbc-client/pom.xml | 200 | ||||
-rw-r--r-- | dbc-client/src/.DS_Store | bin | 0 -> 8196 bytes | |||
-rw-r--r-- | dbc-client/src/main/.DS_Store | bin | 0 -> 6148 bytes | |||
-rw-r--r-- | dbc-client/src/main/resources/Dockerfile | 37 | ||||
-rw-r--r-- | dmaap-bc/misc/dmaapbc | 6 | ||||
-rw-r--r-- | dmaap-bc/pom.xml | 235 | ||||
-rw-r--r-- | dmaap-bc/src/main/resources/Dockerfile | 41 | ||||
-rw-r--r-- | pom.xml | 33 |
9 files changed, 389 insertions, 166 deletions
@@ -55,13 +55,12 @@ mvn clean install ### Docker Packaging We can utilize docker to build and register the buscontroller container in a local dev repository. -Note the Dockerfile follows ONAP convention of running app as root. ``` <assuming DOCKER_HOST is set appropriately for your environment> -$ mvn -P docker docker:build +$ mvn -P docker ``` diff --git a/dbc-client/pom.xml b/dbc-client/pom.xml index d35ca48..7d36523 100644 --- a/dbc-client/pom.xml +++ b/dbc-client/pom.xml @@ -95,71 +95,147 @@ </pluginManagement> </build> <profiles> - <profile> - <id>docker</id> - <properties> - <skipDockerBuild>false</skipDockerBuild> - <skipDockerTag>false</skipDockerTag> - <skipTests>true</skipTests> - </properties> - <build> - <plugins> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> - <configuration> - <baseImage>alpine:3.8</baseImage> - <imageName>${onap.nexus.dockerregistry.daily}/${docker.image}</imageName> - <entryPoint>["./bin/dbc-client", "deploy"]</entryPoint> - <serverId>${onap.nexus.dockerregistry.daily}</serverId> - <skipDockerBuild>false</skipDockerBuild> - <imageTags> - <imageTag>${artifact.version}</imageTag> - <imageTag>latest</imageTag> - </imageTags> - <volumes> - <volume>/opt/app/dbc-client/log</volume> - </volumes> - <forceTags>true</forceTags> - <user>root</user> - <resources> + <profile> + <id>docker</id> + <properties> + <skipDockerBuild>false</skipDockerBuild> + <skipDockerTag>false</skipDockerTag> + <skipTests>true</skipTests> + </properties> + <build> + <!-- Copy files to docker-stage to be included in image --> + <resources> <resource> - <targetPath>/opt/app/dmaapbc/etc</targetPath> - <directory>${multiproject.basedir}/dbc-client</directory> - <include>version.properties</include> + <targetPath>${basedir}/target/docker-stage</targetPath> + <directory>${basedir}/src/main/resources</directory> + <includes> + <include>Dockerfile</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dbc-client/misc</targetPath> - <directory>${multiproject.basedir}/misc</directory> - <include>cert-client-init.sh</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dbc-client/bin</targetPath> + <directory>${basedir}/misc</directory> + <includes> + <include>dbc-client</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dbc-client/bin</targetPath> - <directory>${multiproject.basedir}/dbc-client/misc</directory> - <include>dbc-client</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/etc</targetPath> + <directory>${basedir}</directory> + <includes> + <include>version.properties</include> + </includes> + </resource> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dbc-client/misc</targetPath> + <directory>${multiproject.basedir}/misc</directory> + <includes> + <include>cert-client-init.sh</include> + </includes> </resource> </resources> - <runs> - <run> apk add --no-cache curl </run> - <run>chmod +x /opt/app/dbc-client/misc/cert-client-init.sh</run> - <run>chmod +x /opt/app/dbc-client/bin/*</run> - <run>mkdir /opt/app/dbc-client/logs</run> - </runs> - <workdir>/opt/app/dbc-client</workdir> - </configuration> - <executions> - <execution> - <id>default</id> - <goals> - <goal>build</goal> - <goal>push</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> + <plugins> + + <!-- Copy jar to docker-stage to be included in image --> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>2.7</version> + <executions> + <execution> + <id>copy-jar</id> + <phase>package</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/docker-stage/opt/app/dmaapbc/lib</outputDirectory> + <resources> + <resource> + <directory>${multiproject.basedir}/dbc-client/target</directory> + <includes> + <include>dbc-client.jar</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + + <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging --> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <properties> + <ver>${project.version}</ver> + <timestamp>${maven.build.timestamp}</timestamp> + </properties> + <source> + println 'ver: ' + project.properties['ver']; + if ( project.properties['ver'].endsWith("-SNAPSHOT") ) { + project.properties['dockertag1']=project.properties['ver'] + "-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp']; + } else { + project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp']; + } + println 'docker tag 1: ' + project.properties['dockertag1']; + println 'docker tag 2: ' + project.properties['dockertag2']; + </source> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.28.0</version> + <configuration> + <verbose>${docker.verbose}</verbose> + <apiVersion>${docker.apiVersion}</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <images> + <image> + <name>${onap.nexus.dockerregistry.daily}/${docker.image}</name> + <build> + <cleanup>try</cleanup> + <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${dockertag1}</tag> + <tag>${dockertag2}</tag> + </tags> + </build> + </image> + </images> + </configuration> + <executions> + <execution> + <id>generate-images</id> + <phase>install</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> </profile> </profiles> <dependencyManagement> @@ -192,6 +268,10 @@ <!-- for Distribution Management --> <sitePath>/content/sites/site/org/onap/dmaap/dbc-client/${artifact.version}</sitePath> + + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> + </properties> <description>Packaging Platform (DMaaP) HTTP Client for Bus Controller Provisioning.</description> </project> diff --git a/dbc-client/src/.DS_Store b/dbc-client/src/.DS_Store Binary files differnew file mode 100644 index 0000000..15a0943 --- /dev/null +++ b/dbc-client/src/.DS_Store diff --git a/dbc-client/src/main/.DS_Store b/dbc-client/src/main/.DS_Store Binary files differnew file mode 100644 index 0000000..580b81f --- /dev/null +++ b/dbc-client/src/main/.DS_Store diff --git a/dbc-client/src/main/resources/Dockerfile b/dbc-client/src/main/resources/Dockerfile new file mode 100644 index 0000000..1e49e42 --- /dev/null +++ b/dbc-client/src/main/resources/Dockerfile @@ -0,0 +1,37 @@ +######### +# ============LICENSE_START==================================================== +# org.onap.dmaap +# =========================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2018 Nokia. All rights reserved. +# =========================================================================== +# Licensed 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. +# ============LICENSE_END==================================================== +# +FROM alpine:3.8 + +MAINTAINER DMAAP Team + +COPY /opt /opt + +WORKDIR /opt/app/dbc-client + +#RUN apk add --no-cache curl + +RUN chmod +x /opt/app/dbc-client/misc/cert-client-init.sh && \ + chmod +x /opt/app/dbc-client/bin/* && \ + mkdir /opt/app/dbc-client/logs + +VOLUME /opt/app/dbc-client/log + +ENTRYPOINT ["sh", "./bin/dbc-client", "deploy"] diff --git a/dmaap-bc/misc/dmaapbc b/dmaap-bc/misc/dmaapbc index f1e8ae7..76317d8 100644 --- a/dmaap-bc/misc/dmaapbc +++ b/dmaap-bc/misc/dmaapbc @@ -52,13 +52,15 @@ config() { echo "Expected app root directory $APP_ROOT does not exist" exit 1 fi + + cd $APP_ROOT if [ ! -f $CONTAINER_CONFIG ] then echo "WARNING: Expected env file $CONTAINER_CONFIG not found. Default behaviors in effect" find $CONTAINER_ROOT -type f + else + source $CONTAINER_CONFIG fi - cd $APP_ROOT - source $CONTAINER_CONFIG if [ "$DMAAPBC_WAIT_TO_EXIT" != "Y" ] then diff --git a/dmaap-bc/pom.xml b/dmaap-bc/pom.xml index f7f2bc1..e4b64ed 100644 --- a/dmaap-bc/pom.xml +++ b/dmaap-bc/pom.xml @@ -168,95 +168,165 @@ </pluginManagement> </build> <profiles> - <profile> - <id>docker</id> - <properties> - <skipDockerBuild>false</skipDockerBuild> - <skipDockerTag>false</skipDockerTag> - <skipTests>true</skipTests> - </properties> - <build> - <plugins> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> - <configuration> - <baseImage>java:openjdk-8-jre</baseImage> - <imageName>${onap.nexus.dockerregistry.daily}/${docker.image}</imageName> - <entryPoint>["./bin/dmaapbc", "deploy"]</entryPoint> - <serverId>${onap.nexus.dockerregistry.daily}</serverId> - <skipDockerBuild>false</skipDockerBuild> - <imageTags> - <imageTag>${artifact.version}</imageTag> - <imageTag>latest</imageTag> - </imageTags> - <volumes> - <volume>/opt/app/dmaapbc/log</volume> - </volumes> - <forceTags>true</forceTags> - <user>root</user> - <resources> + <profile> + <id>docker</id> + <properties> + <skipDockerBuild>false</skipDockerBuild> + <skipDockerTag>false</skipDockerTag> + <skipTests>true</skipTests> + </properties> + <build> + <!-- Copy files to docker-stage to be included in image --> + <resources> <resource> - <targetPath>/opt/app/dmaapbc/lib</targetPath> - <directory>${multiproject.basedir}/dmaap-bc/target</directory> - <include>dmaap-bc.jar</include> + <targetPath>${basedir}/target/docker-stage</targetPath> + <directory>${basedir}/src/main/resources</directory> + <includes> + <include>Dockerfile</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dmaapbc/etc</targetPath> - <directory>${multiproject.basedir}/dmaap-bc/misc</directory> - <include>LocalKey</include> - <include>logback.xml</include> - <include>org.onap.dmaap-bc.trust.jks</include> - <include>dbc-api.jks</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/etc</targetPath> + <directory>${basedir}/misc</directory> + <includes> + <include>LocalKey</include> + <include>logback.xml</include> + <include>org.onap.dmaap-bc.trust.jks</include> + <include>dbc-api.jks</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dmaapbc/etc</targetPath> - <directory>${multiproject.basedir}/dmaap-bc</directory> - <include>version.properties</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/etc</targetPath> + <directory>${basedir}</directory> + <includes> + <include>version.properties</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dmaapbc/misc</targetPath> - <directory>${multiproject.basedir}/dmaap-bc/misc</directory> - <include>opensource.env</include> - <include>*.tmpl</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/misc</targetPath> + <directory>${basedir}/misc</directory> + <includes> + <include>opensource.env</include> + <include>*.tmpl</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dmaapbc/misc</targetPath> - <directory>${multiproject.basedir}/misc</directory> - <include>cert-client-init.sh</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/misc</targetPath> + <directory>${multiproject.basedir}/misc</directory> + <includes> + <include>cert-client-init.sh</include> + </includes> </resource> - <resource> - <targetPath>/opt/app/dmaapbc/bin</targetPath> - <directory>${multiproject.basedir}/dmaap-bc/misc</directory> - <include>dmaapbc</include> - <include>doaction</include> + <resource> + <targetPath>${basedir}/target/docker-stage/opt/app/dmaapbc/bin</targetPath> + <directory>${basedir}/misc</directory> + <includes> + <include>dmaapbc</include> + <include>doaction</include> + </includes> </resource> </resources> - <runs> - <run>mv /opt/app/dmaapbc/etc/dbc-api.jks /opt/app/dmaapbc/etc/keystore</run> - <run>chmod 600 /opt/app/dmaapbc/etc/keystore</run> - <run>chmod 600 /opt/app/dmaapbc/etc/org.onap.dmaap-bc.trust.jks</run> - <run>chmod +x /opt/app/dmaapbc/misc/cert-client-init.sh</run> - <run>chmod +x /opt/app/dmaapbc/bin/*</run> - <run>mkdir /opt/app/dmaapbc/logs</run> - <run>mkdir /opt/app/dmaapbc/www</run> - <run>mkdir /opt/app/dmaapbc/www/doc</run> - </runs> - <workdir>/opt/app/dmaapbc</workdir> - </configuration> - <executions> - <execution> - <id>default</id> - <goals> - <goal>build</goal> - <goal>push</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> + <plugins> + <!-- Copy jar to docker-stage to be included in image --> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>2.7</version> + <executions> + <execution> + <id>copy-jar</id> + <phase>package</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/docker-stage/opt/app/dmaapbc/lib</outputDirectory> + <resources> + <resource> + <directory>${multiproject.basedir}/dmaap-bc/target</directory> + <includes> + <include>dmaap-bc.jar</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + + <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging --> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <properties> + <ver>${project.version}</ver> + <timestamp>${maven.build.timestamp}</timestamp> + </properties> + <source> + println 'ver: ' + project.properties['ver']; + if ( project.properties['ver'].endsWith("-SNAPSHOT") ) { + project.properties['dockertag1']=project.properties['ver'] + "-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp']; + } else { + project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp']; + } + println 'docker tag 1: ' + project.properties['dockertag1']; + println 'docker tag 2: ' + project.properties['dockertag2']; + </source> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.28.0</version> + <configuration> + <verbose>${docker.verbose}</verbose> + <apiVersion>${docker.apiVersion}</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <images> + <image> + <name>${onap.nexus.dockerregistry.daily}/${docker.image}</name> + <build> + <cleanup>try</cleanup> + <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${dockertag1}</tag> + <tag>${dockertag2}</tag> + </tags> + </build> + </image> + </images> + </configuration> + <executions> + <execution> + <id>generate-images</id> + <phase>install</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> </profile> </profiles> <dependencyManagement> @@ -401,6 +471,9 @@ <nexusproxy>https://nexus.onap.org</nexusproxy> <docker.push.registry>10.12.5.45:5000</docker.push.registry> + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> + <!-- for Distribution Management --> <sitePath>/content/sites/site/org/onap/dmaap/dmaap-bc/${artifact.version}</sitePath> </properties> diff --git a/dmaap-bc/src/main/resources/Dockerfile b/dmaap-bc/src/main/resources/Dockerfile new file mode 100644 index 0000000..16820e1 --- /dev/null +++ b/dmaap-bc/src/main/resources/Dockerfile @@ -0,0 +1,41 @@ +######### +# ============LICENSE_START==================================================== +# org.onap.dmaap +# =========================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2018 Nokia. All rights reserved. +# =========================================================================== +# Licensed 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. +# ============LICENSE_END==================================================== +# +FROM openjdk:8-jre-alpine + +MAINTAINER DMAAP Team + +COPY /opt /opt + +WORKDIR /opt/app/dmaapbc + +RUN mv etc/dbc-api.jks etc/keystore && \ + chmod 600 etc/keystore && \ + chmod 600 etc/org.onap.dmaap-bc.trust.jks && \ + chmod +x misc/cert-client-init.sh && \ + chmod +x bin/* && \ + mkdir logs && \ + mkdir www && \ + mkdir doc && \ + mkdir config + +VOLUME /opt/app/dmaapbc/log + +ENTRYPOINT ["sh", "./bin/dmaapbc", "deploy"] @@ -40,27 +40,18 @@ <skip.docker.push>true</skip.docker.push> </properties> -<!--- - <profiles> - <profile> - <id>docker</id> ---> - <build> - <plugins> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> - <configuration> - <skipDockerBuild>${skip.docker.build}</skipDockerBuild> - </configuration> - </plugin> - </plugins> - </build> -<!--- - </profile> - </profiles> ---> + <build> + <plugins> + <plugin> + <groupId>com.spotify</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>${docker.maven.plugin.version}</version> + <configuration> + <skipDockerBuild>${skip.docker.build}</skipDockerBuild> + </configuration> + </plugin> + </plugins> + </build> <modules> <module>dmaap-bc</module> |