summaryrefslogtreecommitdiffstats
path: root/integration/src/main/scripts/release/mkdock.sh
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2022-06-17 10:44:27 +0100
committerliamfallon <liam.fallon@est.tech>2022-06-17 10:47:38 +0100
commitcd44921c7e00e699b27697d3e5be4fc3433b81a2 (patch)
treeb06c916c12e9075571f51b1978105357bb81900d /integration/src/main/scripts/release/mkdock.sh
parentb3223fd59ea60d98948e23073833a010c027a8a2 (diff)
Restructure scripts in policy-parent
- Moved the scripts into src/main/scripts - created src/main/resources - added pf_release_data.csv to src/main/resources, this file will be - added a n ew release phase to release the mdoels-simulator image pf_release_data.sh: Used to find the correct versions of images to use for the CSIT tests, the current lookup scripts can't cope with snapshots being deleted after they time out. Issue-ID: POLICY-4233 Change-Id: Idb5a4a624c06114f0f480c599e87f5596705ea07 Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'integration/src/main/scripts/release/mkdock.sh')
-rwxr-xr-xintegration/src/main/scripts/release/mkdock.sh154
1 files changed, 154 insertions, 0 deletions
diff --git a/integration/src/main/scripts/release/mkdock.sh b/integration/src/main/scripts/release/mkdock.sh
new file mode 100755
index 00000000..0df4abad
--- /dev/null
+++ b/integration/src/main/scripts/release/mkdock.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+
+#
+# ============LICENSE_START================================================
+# ONAP
+# =========================================================================
+# Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+# Modifications Copyright (C) 2022 Nordix Foundation.
+# =========================================================================
+# 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==================================================
+#
+
+#
+# This creates the x.y.z-container.yaml file for releasing a docker image.
+# It should be executed from somewhere within the "git" repo to be
+# released. Assumes the following:
+# - the latest commit is at the top of the "git log"
+# - the branch to be released is currently checked out
+# - the latest maven-docker-stage jenkins job is the one to be released
+# - the defaultbranch within the .gitreview file is set to the
+# branch to be released
+#
+# This uses xmllint, which is part of the libxml2-utils package.
+#
+# If behind a firewall, then http_proxy must be set so that curl
+# can get through the firewall.
+#
+
+set -e
+
+# Use the bash internal OSTYPE variable to check for MacOS
+if [[ "$OSTYPE" == "darwin"* ]]
+then
+ SED="gsed"
+else
+ SED="sed"
+fi
+
+# shellcheck disable=SC2166
+if [ $# -lt 1 -o "$1" = "-?" ]
+then
+ echo "arg(s): docker-container-name1 docker-container-name2 ..." >&2
+ exit 1
+fi
+
+TOPDIR=$(git rev-parse --show-toplevel)
+if [ -z "${TOPDIR}" ]; then
+ echo "cannot determine top of 'git' repo" >&2
+ exit 1
+fi
+
+BRANCH=$(awk -F= '$1 == "defaultbranch" { print $2 }' "${TOPDIR}/.gitreview")
+if [ -z "${BRANCH}" ]; then
+ echo "cannot extract default branch from ${TOPDIR}/.gitreview" >&2
+ exit 1
+fi
+echo "Branch: ${BRANCH}"
+
+PROJECT=$(awk -F= '$1 == "project" { print $2 }' "${TOPDIR}/.gitreview" |
+ $SED 's/.git$//')
+if [ -z "${PROJECT}" ]; then
+ echo "cannot extract project from ${TOPDIR}/.gitreview" >&2
+ exit 1
+fi
+echo "Project: ${PROJECT}"
+DPROJ=$(echo "${PROJECT}" | $SED 's!/!-!')
+
+RELEASE=$(
+ xmllint --xpath \
+ '/*[local-name()="project"]/*[local-name()="version"]/text()' \
+ "${TOPDIR}/pom.xml" |
+ $SED 's!-SNAPSHOT!!'
+ )
+if [ -z "${RELEASE}" ]; then
+ echo "cannot extract release from ${TOPDIR}/pom.xml" >&2
+ exit 1
+fi
+echo "Release: ${RELEASE}"
+
+REF_ID=$(git log | grep commit | head -1 | awk '{ print $2 }')
+if [ -z "${REF_ID}" ]; then
+ echo "cannot extract ref from 'git log'" >&2
+ exit 1
+fi
+echo "Ref: ${REF_ID}"
+
+prefix='https://jenkins.onap.org/view/policy/job/'
+STAGE_ID=$(
+ curl --silent "${prefix}${DPROJ}-maven-docker-stage-${BRANCH}/" |
+ grep "Last completed build" |
+ $SED -e 's!.*Last completed build .#!!' -e 's!).*!!' |
+ head -1
+ )
+if [ -z "${STAGE_ID}" ]; then
+ echo "cannot extract last docker stage ID from jenkins" >&2
+ exit 1
+fi
+STAGE_ID=${DPROJ}-maven-docker-stage-${BRANCH}/${STAGE_ID}
+echo "Stage ID: ${STAGE_ID}"
+
+prefix='https://jenkins.onap.org/view/policy/job/'
+JOB_OUT=$(curl --silent "${prefix}${STAGE_ID}/consoleFull")
+echo "${JOB_OUT}" | grep -q "Finished: SUCCESS"
+# shellcheck disable=SC2181
+if [ $? -ne 0 ]; then
+ echo "last docker build has not completed successfully" >&2
+ exit 1
+fi
+
+echo "Creating ${TOPDIR}/releases/${RELEASE}-container.yaml"
+cat >"${TOPDIR}/releases/${RELEASE}-container.yaml" <<EOT
+distribution_type: 'container'
+container_release_tag: '${RELEASE}'
+project: '${DPROJ}'
+log_dir: '${STAGE_ID}'
+ref: ${REF_ID}
+containers:
+EOT
+
+for CONT_NAME in "$@"
+do
+ VERSION=$(
+ echo "${JOB_OUT}" |
+ awk "
+ /Successfully tagged onap/ { found = 0 }
+ /Successfully tagged onap\/${CONT_NAME}:/ { found = 1 }
+ found == 1 && /Tag with/ { print }
+ " |
+ head -1 |
+ $SED 's!.*Tag with!!' |
+ cut -d, -f2
+ )
+ if [ -z "${VERSION}" ]; then
+ echo "cannot extract ${CONT_NAME} version from jenkins build output" >&2
+ exit 1
+ fi
+ echo "${CONT_NAME} version: ${VERSION}"
+
+ cat >>"${TOPDIR}/releases/${RELEASE}-container.yaml" <<EOT_LOOP
+ - name: '${CONT_NAME}'
+ version: '${VERSION}'
+EOT_LOOP
+done