diff options
author | Jorge Hernandez <jorge.hernandez-herrero@att.com> | 2019-02-07 15:58:58 -0600 |
---|---|---|
committer | Jorge Hernandez <jorge.hernandez-herrero@att.com> | 2019-02-08 11:58:59 -0600 |
commit | 638480e04fc6eadeebdcb018573a463a1c61cdaa (patch) | |
tree | b62fb74d3a89e6733691377564f0d079efc06b58 /controlloop/build/docker-cl | |
parent | 0c1084282ae62cbe9d5b054057aed1b759dc82cd (diff) |
basic image with CL app preloaded
The image can replace the drools-pdp and only
overrides what is necessary to make sure the CL
application is in the image. There should be
no functional difference.
Tooling to operate with docker images is provided
as well, for example:
controlloop/tools/docker-cl --help
BUILD INFO:
image: policy-pdpd-cl
image-path: controlloop/packages/docker-controlloop/target/policy-pdpd-cl
image: policy-pdpd-cl
registry: nexus3.onap.org:10003
patch: 1.4.0-SNAPSHOT
version: 1.4-SNAPSHOT
timestamp: 20190207T220835
TAGS:
BUILD:
verify:
onap/policy-pdpd-cl:latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
merge:
onap/policy-pdpd-cl:latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
release:
onap/policy-pdpd-cl:latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-STAGING-20190207T220835Z
PUSH:
verify:
merge:
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
release:
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-STAGING-20190207T220835Z
SYNTAX:
docker-cl
[--help|-h] [--build|-b <repo:tag>] [--push|-p <repo:tag>]
[--verify|-v] [--merge|-m] [--release|-r]
[--run <volume-full-path>] [--cmd <volume-full-path> <cmd>]
Change-Id: I0917c0bca212fc0b543e52ae1615c513d43f7d93
Issue-ID: POLICY-1505
Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'controlloop/build/docker-cl')
-rw-r--r-- | controlloop/build/docker-cl | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/controlloop/build/docker-cl b/controlloop/build/docker-cl new file mode 100644 index 000000000..659c2bad9 --- /dev/null +++ b/controlloop/build/docker-cl @@ -0,0 +1,254 @@ +#!/usr/bin/env bash + +# ######################################################################## +# +# Copyright 2019 AT&T Intellectual Property. 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. +# ######################################################################## + +function usage { + if [[ ${DEBUG} == y ]]; then + echo "-- $0 --" + set -x + fi + + echo + echo "SYNTAX:" + echo -e "\t$(basename "$0") " + echo -e "\t\t[--help|-h] [--build|-b <repo:tag>] [--push|-p <repo:tag>]" + echo -e "\t\t[--verify|-v] [--merge|-m] [--release|-r] " + echo -e "\t\t[--run <volume-full-path>] [--cmd <volume-full-path> <cmd>]" + echo + echo +} + +function build { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + fi + + local tag tags + + for tag in "$@"; do + tags="${tags} --tag ${tag}" + done + + (set -x; docker build ${BUILD_ARGS} ${tags} ${IMAGE_PATH}) + + if [[ $? != 0 ]]; then + echo -e "\nERROR: docker build\n" + return 1 + fi + + docker image ls | egrep "TAG|${IMAGE}" + + return 0 +} + +function push { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + fi + + local tag="${1}" + + if [[ -z ${tag} ]]; then + echo -e "\nERROR: no <repo:tag> provided\n" + return 1 + fi + + (set -x; docker push ${tag}) + + if [[ $? != 0 ]]; then + echo -e "\nERROR: docker push\n" + return 2 + fi + + return 0 +} + +function release { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${RELEASE_BUILD_TAGS} && push ${RELEASE_PUSH_TAGS} + return $? +} + +function merge { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${MERGE_BUILD_TAGS} && push ${MERGE_PUSH_TAGS} + return $? +} + +function verify { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + build ${VERIFY_BUILD_TAGS} + + return $? +} + +function run { + local debugEnv + + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} $* --" + set -x + debugEnv='-e "DEBUG=y"' + fi + + local volume="$1" + local cmd="$2" + + if [[ ! -d ${volume} ]]; then + echo -e "\nERROR: an absolute path to a volume must be provided: ${volume}\n" + return 1 + fi + + ( + set -x + docker run --rm ${debugEnv} -it -v "${volume}":/tmp/policy-install/config -p 9696:9696 \ + --name pdpd-cl onap/policy-pdpd-cl ${cmd} + ) + + return $? +} + +( +if [[ ${DEBUG} == y ]]; then + echo "-- $0 $* --" + set -x +fi + +VERSION_PATH="controlloop/packages/docker-controlloop/target/version" +if [[ ! -f "${VERSION_PATH}" ]]; then + cd "$(dirname "$0")"/../.. + if [[ ! -f "${VERSION_PATH}" ]]; then + echo -e "\nERROR: ${VERSION_PATH} cannot be found\n" + usage + exit 1 + fi +fi + +DOCKER_REPOSITORY="nexus3.onap.org:10003" +IMAGE=policy-pdpd-cl +IMAGE_PATH="controlloop/packages/docker-controlloop/target/${IMAGE}" + +VERSION="$(cat "${VERSION_PATH}")" +MAJOR_MINOR_VERSION="$(cut -f 1,2 -d . "${VERSION_PATH}")" +TIMESTAMP="$(date -u +%Y%m%dT%H%M%S)" + +if [[ -z "${VERSION}" ]]; then + echo -e "\nERROR: no version\n" + usage + exit 1 +fi + +if [[ -z "${MAJOR_MINOR_VERSION}" ]]; then + echo "\nERROR: no major/minor version: ${VERSION}\n" + usage + exit 1 +fi + +if [[ ${VERSION} == *"SNAPSHOT"* ]]; then + MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-SNAPSHOT" +else + MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-STAGING" +fi + +BUILD_ARGS="--build-arg BUILD_VERSION_APP_CL=${VERSION}" + +echo +echo -e "BUILD INFO:" +echo -e "\timage: ${IMAGE}" +echo -e "\timage-path: ${IMAGE_PATH}" +echo -e "\timage: ${IMAGE}" +echo -e "\tregistry: ${DOCKER_REPOSITORY}" +echo -e "\tpatch: ${VERSION}" +echo -e "\tversion: ${MAJOR_MINOR_VERSION}" +echo -e "\ttimestamp: ${TIMESTAMP}" +echo + +TAG_LATEST="onap/${IMAGE}:latest" +TAG_REPO_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:latest" +TAG_REPO_VERSION_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:${MAJOR_MINOR_VERSION}-latest" +TAG_REPO_VERSION_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-${TIMESTAMP}Z" +TAG_REPO_VERSION_STAGING_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-STAGING-${TIMESTAMP}Z" + +VERIFY_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" + +MERGE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" +RELEASE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}" + +MERGE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}" +RELEASE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}" + +echo +echo -e "TAGS:" +echo -e "\tBUILD:" +echo -e "\t\tverify:\n\t\t\t${VERIFY_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\t\tmerge:\n\t\t\t${MERGE_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\t\trelease:\n\t\t\t${RELEASE_BUILD_TAGS// /$'\n\t\t\t'}" +echo -e "\tPUSH:" +echo -e "\t\tverify: " +echo -e "\t\tmerge:\n\t\t\t${MERGE_PUSH_TAGS// /$'\n\t\t\t'}" +echo -e "\t\trelease:\n\t\t\t${RELEASE_PUSH_TAGS// /$'\n\t\t\t'}" +echo +echo + +until [[ -z "$1" ]]; do + case "$1" in + -h|--help) usage + ;; + -b|--build) shift + build "$1" + ;; + -p|--push) shift + push "$1" + ;; + -r|--release) release + ;; + -m|--merge) merge + ;; + -v|--verify) verify + ;; + --run) shift + volumeArg="$1" + run "${volumeArg}" + ;; + --cmd) shift + volumeArg="$1" + shift + cmdArg="$1" + run "${volumeArg}" "${cmdArg}" + ;; + *) usage + exit 1 + ;; + esac + shift +done +) |