From 70d110ddddf96879a0a68d4a794ba70f770f6a84 Mon Sep 17 00:00:00 2001 From: Dileep Ranganathan Date: Thu, 19 Jul 2018 09:26:56 -0700 Subject: Fix Docker image to use the nexus artifacts Fixed Docker image to use the nexus artifacts instead of building from source. Added proxy support. Updated the Docker image version for Casablanca. Change-Id: If7f6eb206356c5b255804f27949d23ab85068f52 Issue-ID: OPTFRA-301 Signed-off-by: Dileep Ranganathan --- docker/Dockerfile | 20 ++++++++++++++---- docker/build_image.sh | 58 +++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 63 insertions(+), 15 deletions(-) (limited to 'docker') diff --git a/docker/Dockerfile b/docker/Dockerfile index 7a38ad8..5a2c460 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,6 +19,14 @@ FROM ubuntu:16.04 +ARG MVN_ARTIFACT_VERSION +ARG REPO +ARG HTTP_PROXY=${HTTP_PROXY} +ARG HTTPS_PROXY=${HTTPS_PROXY} + +ENV http_proxy $HTTP_PROXY +ENV https_proxy $HTTPS_PROXY + ENV OSDF_PORT "8699" EXPOSE ${OSDF_PORT} @@ -28,7 +36,7 @@ ENV MZN_GH_BASE https://github.com/MiniZinc/MiniZincIDE ENV MZN_DL_URL ${MZN_GH_BASE}/releases/download/${MZN}/${MZN_BASENAME}.tgz RUN apt-get update -y \ - && apt-get install -y vim wget libmpfr-dev \ + && apt-get install -y vim unzip wget libmpfr-dev \ && apt-get install -y git libqt5printsupport5 build-essential \ && apt-get install -y python3 python3-setuptools python3-dev \ && easy_install3 pip \ @@ -47,7 +55,11 @@ ENV SHELL /bin/bash ENV PATH /mz-dist:$PATH # OSDF -RUN git clone http://gerrit.onap.org/r/optf/osdf \ - && pip install --no-cache-dir -r osdf/requirements.txt +WORKDIR /opt/osdf +RUN wget -O /opt/osdf.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.optf.osdf&a=optf-osdf&e=zip&v=${MVN_ARTIFACT_VERSION}" && \ + unzip -q -o -B /opt/osdf.zip -d /opt/ && \ + rm -f /opt/osdf.zip +RUN mkdir -p /var/log/onap/optf/osdf/ +RUN pip install --no-cache-dir -r requirements.txt -CMD [ "/osdf/osdfapp.sh" ] +CMD [ "/opt/osdf/osdfapp.sh" ] diff --git a/docker/build_image.sh b/docker/build_image.sh index c723a4f..d5e153b 100755 --- a/docker/build_image.sh +++ b/docker/build_image.sh @@ -25,28 +25,64 @@ IMAGE_NAME=$DOCKER_REPOSITORY/$ORG/$PROJECT # Version properties source version.properties VERSION=$release_version +SNAPSHOT=$snapshot_version STAGING=${release_version}-STAGING +TIMESTAMP=$(date +"%Y%m%dT%H%M%S")Z + +BUILD_ARGS="--no-cache" +if [ $HTTP_PROXY ]; then + BUILD_ARGS+=" --build-arg HTTP_PROXY=${HTTP_PROXY}" +fi +if [ $HTTPS_PROXY ]; then + BUILD_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" +fi function log_ts() { # Log message with timestamp echo [DEBUG LOG at $(date -u +%Y%m%d:%H%M%S)] "$@" } +function get_artifact_version() { + log_ts Get Maven Artifact version from pom.xml + MVN_ARTIFACT_VERSION=`echo -e "setns x=http://maven.apache.org/POM/4.0.0 \n xpath /x:project/x:version/text() "| xmllint --shell pom.xml | grep content | sed 's/.*content=//'` + log_ts Maven artifact version for OSDF is $MVN_ARTIFACT_VERSION + if [[ "$MVN_ARTIFACT_VERSION" =~ SNAPSHOT ]]; then + log_ts "REPO is snapshots"; + REPO=snapshots + else + log_ts "REPO is releases"; + REPO=releases + fi + BUILD_ARGS+=" --build-arg REPO=${REPO}" + BUILD_ARGS+=" --build-arg MVN_ARTIFACT_VERSION=${MVN_ARTIFACT_VERSION}" +} + function build_image() { - log_ts Building Image in folder: $PWD - docker build -t ${IMAGE_NAME}:${VERSION} -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${STAGING} . - log_ts ... Built + log_ts Building Image in folder: $PWD with build arguments ${BUILD_ARGS} + docker build ${BUILD_ARGS} -t ${IMAGE_NAME}:latest . + log_ts ... Built +} + +function tag_image() { + log_ts Tagging images: ${IMAGE_NAME}:\{$SNAPSHOT-${TIMESTAMP},$STAGING-${TIMESTAMP},latest\} + docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${SNAPSHOT}-${TIMESTAMP} + docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${STAGING}-${TIMESTAMP} + docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:latest + log_ts ... Tagged images } function push_image(){ - log_ts Pushing images: ${IMAGE_NAME}:\{$VERSION,$STAGING,latest\} - docker push ${IMAGE_NAME}:${VERSION} - docker push ${IMAGE_NAME}:${STAGING} - docker push ${IMAGE_NAME}:latest - log_ts ... Pushed images + log_ts Pushing images: ${IMAGE_NAME}:\{$SNAPSHOT-${TIMESTAMP},$STAGING-${TIMESTAMP},latest\} + docker push ${IMAGE_NAME}:${SNAPSHOT}-${TIMESTAMP} + docker push ${IMAGE_NAME}:${STAGING}-${TIMESTAMP} + docker push ${IMAGE_NAME}:latest + log_ts ... Pushed images } ( - cd $(dirname $0) - build_image - push_image + get_artifact_version + # Switch to docker build directory + cd $(dirname $0) + build_image + tag_image + push_image ) -- cgit 1.2.3-korg