From 60d994ca23c8c03494de8ddb40d13fe23ebd7a0a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20Ospal=C3=BD?= Date: Thu, 5 Sep 2019 16:47:48 +0200 Subject: [PATCH] Add support for testing of local SDC images MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit By default it is disabled and the test works as before, but by providing the SDC_LOCAL_IMAGES variable with a value of true/yes it will not use the upstream images (from registry) but instead the local one (in docker cache) - they have to be build beforehand of course. They are two more optional variables (if SDC_LOCAL_IMAGES == true/yes): SDC_LOCAL_GITREPO .. for local git repo instead of an upstream branch SDC_LOCAL_TAG .. it will use local images with this docker tag Issue-ID: SDC-2553 Signed-off-by: Petr Ospalý Change-Id: Ib64ca17e81aa9c3406e0a5d8fb403f1c1b0862a1 --- plans/sdc/sanity/setup.sh | 22 ++++++++++++++ plans/sdc/uiSanity/setup.sh | 23 +++++++++++++++ scripts/sdc/setup_sdc_for_sanity.sh | 59 +++++++++++++++++++++++++++++++++++-- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/plans/sdc/sanity/setup.sh b/plans/sdc/sanity/setup.sh index 0e652f86..20a8eac3 100644 --- a/plans/sdc/sanity/setup.sh +++ b/plans/sdc/sanity/setup.sh @@ -15,4 +15,26 @@ # limitations under the License. # +# By default all images are from remote upstream registry, this option +# provides the chance to test locally built images +export SDC_LOCAL_IMAGES="${SDC_LOCAL_IMAGES:-false}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# The path to the local sdc git repo from which the local images have +# been built - it also affects the tag used - if left empty *AND* +# local images are used *AND* SDC_LOCAL_TAG is unset then the tag +# will be set to: 'latest' +# +# BEWARE: Using local images with an incorrect git repo could lead to +# problems...set SDC_LOCAL_GITREPO or GERRIT_BRANCH properly... +export SDC_LOCAL_GITREPO="${SDC_LOCAL_GITREPO}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# This will set the tag for local images - leaving this empty *AND* +# with unset SDC_LOCAL_GITREPO the local images will fallback to the +# tag: 'latest' +export SDC_LOCAL_TAG="${SDC_LOCAL_TAG}" + source ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh tad diff --git a/plans/sdc/uiSanity/setup.sh b/plans/sdc/uiSanity/setup.sh index 3d315098..b02cd7be 100644 --- a/plans/sdc/uiSanity/setup.sh +++ b/plans/sdc/uiSanity/setup.sh @@ -13,5 +13,28 @@ # 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. +# + +# By default all images are from remote upstream registry, this option +# provides the chance to test locally built images +export SDC_LOCAL_IMAGES="${SDC_LOCAL_IMAGES:-false}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# The path to the local sdc git repo from which the local images have +# been built - it also affects the tag used - if left empty *AND* +# local images are used *AND* SDC_LOCAL_TAG is unset then the tag +# will be set to: 'latest' +# +# BEWARE: Using local images with an incorrect git repo could lead to +# problems...set SDC_LOCAL_GITREPO or GERRIT_BRANCH properly... +export SDC_LOCAL_GITREPO="${SDC_LOCAL_GITREPO}" + +# For this to take effect SDC_LOCAL_IMAGES must be enabled... +# +# This will set the tag for local images - leaving this empty *AND* +# with unset SDC_LOCAL_GITREPO the local images will fallback to the +# tag: 'latest' +export SDC_LOCAL_TAG="${SDC_LOCAL_TAG}" source ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh tud diff --git a/scripts/sdc/setup_sdc_for_sanity.sh b/scripts/sdc/setup_sdc_for_sanity.sh index 603bd457..fc9f31b4 100644 --- a/scripts/sdc/setup_sdc_for_sanity.sh +++ b/scripts/sdc/setup_sdc_for_sanity.sh @@ -6,7 +6,22 @@ function usage { echo "setup sdc and run ui test suite: setup_sdc_for_sanity.sh tud" } -set -x +# returns 0: if SDC_LOCAL_IMAGES is set to true value +# returns 1: otherwise +function using_local_images { + SDC_LOCAL_IMAGES=$(echo "${SDC_LOCAL_IMAGES}" | tr '[:upper:]' '[:lower:]') + + case "$SDC_LOCAL_IMAGES" in + 1|yes|true|Y) + return 0 + ;; + esac + + return 1 +} + +# fail quick if error +set -exo pipefail echo "This is ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh" @@ -21,7 +36,17 @@ mkdir -p ${WORKSPACE}/data/environments/ mkdir -p ${WORKSPACE}/data/clone/ cd ${WORKSPACE}/data/clone -git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH} +if using_local_images && [ -n "$SDC_LOCAL_GITREPO" ] ; then + if [ -d "$SDC_LOCAL_GITREPO" ] ; then + rm -rf ./sdc + cp -a "$SDC_LOCAL_GITREPO" ./sdc + else + echo "[ERROR]: Local git repo for sdc does not exist: ${SDC_LOCAL_GITREPO}" + exit 1 + fi +else + git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH} +fi chmod -R 777 ${WORKSPACE}/data/clone @@ -47,12 +72,40 @@ cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/sc source ${WORKSPACE}/data/clone/sdc/version.properties export RELEASE=$major.$minor-STAGING-latest -${WORKSPACE}/scripts/sdc/docker_run.sh -r ${RELEASE} -e ${ENV_NAME} -p 10001 -${TEST_SUITE} +if using_local_images ; then + if [ -n "$SDC_LOCAL_TAG" ] ; then + RELEASE="$SDC_LOCAL_TAG" + elif [ -z "$SDC_LOCAL_GITREPO" ] ; then + echo "[WARNING]: Local images used but no tag and no source (git repo) provided for them - we will use tag 'latest'" + RELEASE=latest + fi + + echo "[INFO]: We will use the locally built images (tag: ${RELEASE})" + ${WORKSPACE}/scripts/sdc/docker_run.sh \ + --local \ + -r ${RELEASE} \ + -e ${ENV_NAME} \ + -p 10001 -${TEST_SUITE} +else + echo "[INFO]: We will download images from the default registry (tag: ${RELEASE})" + ${WORKSPACE}/scripts/sdc/docker_run.sh \ + -r ${RELEASE} \ + -e ${ENV_NAME} \ + -p 10001 -${TEST_SUITE} +fi sleep 120 +# This file is sourced in another script which is out of our control... +set +e +set +o pipefail + +# The code below for example does nothing and breaks immediately (running locally at least) +# Also it is very fragile: empty CID variable and broken docker command... + #monitor test processes + TIME_OUT=1200 INTERVAL=20 TIME=0 -- 2.16.6