From b0f546ad82bcb427bc5f724150063d239f3a306d Mon Sep 17 00:00:00 2001 From: Mateusz Pilat Date: Wed, 8 May 2019 13:33:46 +0200 Subject: Extending molecule test to playbooks Review should also execute molecule tests for ansible/test/play-xxx when anything in /ansible/test has been changed Change-Id: I9a106a1c141b1053db6ac892e2dcecd4e646fd5b Issue-ID: OOM-1801 Signed-off-by: Mateusz Pilat --- ansible/test/bin/ci-molecule.sh | 2 +- ansible/test/bin/install-molecule.sh | 2 +- ansible/test/molecule-docker/Dockerfile | 2 +- offline-installer-review.sh | 96 ++++++++++++++++++++++----------- 4 files changed, 68 insertions(+), 34 deletions(-) diff --git a/ansible/test/bin/ci-molecule.sh b/ansible/test/bin/ci-molecule.sh index be598a48..7859c8dc 100755 --- a/ansible/test/bin/ci-molecule.sh +++ b/ansible/test/bin/ci-molecule.sh @@ -30,7 +30,7 @@ SCRIPT_DIR=$(dirname "${0}") LOCAL_PATH=$(readlink -f "$SCRIPT_DIR") ROLE_PATH=$1 -MOLECULE_CONTAINER=${MOLECULE_CONTAINER:-true} +MOLECULE_CONTAINER=${MOLECULE_CONTAINER:-false} echo "Build all pre-build images" ${LOCAL_PATH}/../images/docker/build-all.sh diff --git a/ansible/test/bin/install-molecule.sh b/ansible/test/bin/install-molecule.sh index f5350df6..72b07937 100755 --- a/ansible/test/bin/install-molecule.sh +++ b/ansible/test/bin/install-molecule.sh @@ -33,7 +33,7 @@ VENV_PATH=${VENV_PATH:-~/molecule_venv} # Create virtual env -python3 -m venv ${VENV_PATH} +python3.6 -m venv ${VENV_PATH} # Activate virtual env source ${VENV_PATH}/bin/activate diff --git a/ansible/test/molecule-docker/Dockerfile b/ansible/test/molecule-docker/Dockerfile index 61817317..5c2343c9 100644 --- a/ansible/test/molecule-docker/Dockerfile +++ b/ansible/test/molecule-docker/Dockerfile @@ -14,7 +14,7 @@ RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \ addgroup -g ${GROUP_ID} ${DOCKER_USER} && \ adduser -D -u ${USER_ID} -G ${DOCKER_USER} ${DOCKER_USER} && \ # Add user to same docker group as in docker_host to be able to use docker driver as sudo - groupadd docker-host -g ${DOCKER_GROUP_ID} && \ + groupadd docker-host -f -g ${DOCKER_GROUP_ID} && \ usermod -aG ${DOCKER_GROUP_ID} ${DOCKER_USER} \ ;fi diff --git a/offline-installer-review.sh b/offline-installer-review.sh index ab327ad9..3530d8f8 100755 --- a/offline-installer-review.sh +++ b/offline-installer-review.sh @@ -1,5 +1,4 @@ #! /usr/bin/env bash - # COPYRIGHT NOTICE STARTS HERE # # Copyright 2018 © Samsung Electronics Co., Ltd. @@ -17,45 +16,80 @@ # limitations under the License. # # COPYRIGHT NOTICE ENDS HERE +############################################################################### +# This script performs Jenkins Change Verification for ONAP Offline Installer # +# No parameters are expected # +############################################################################### -### This script performs Jenkins Change Verification for ONAP Offline Installer -# No parameters are expected -### -####################################################################### -# MAIN # -####################################################################### -#if ansible was changed +function prep_ubuntu_16_04_for_molecule() { + sudo killall apt apt-get + sudo apt-get --assume-yes install software-properties-common + sudo add-apt-repository --yes ppa:deadsnakes/ppa + sudo apt update + sudo apt install --assume-yes python3.6 + sudo apt install --assume-yes python3.6-venv +} - if `git diff HEAD^ HEAD --name-only | grep -q "ansible/test"`; - then echo "TO DO: FULL ANSIBLE TEST" ; - else - ROLE_CHANGES=(`git diff HEAD^ HEAD --name-only | grep "ansible/role" | cut -f 1-3 -d "/" | sort | uniq`) - if [ -z "${ROLE_CHANGES}" ]; then - echo "NO ANSIBLE TESTS REQUIRED" +function run_molecule() { + prep_ubuntu_16_04_for_molecule + local roles=("$@") + local MOLECULE_RC + for role in ${roles[@]} + do + if `find ${role} -name molecule.yml | grep -q '.*'`; then + ./ansible/test/bin/ci-molecule.sh ${role} + MOLECULE_RC=$? + if [ ${MOLECULE_RC} -ne "0" ]; then FAILED_ROLES+=(${role}); fi else - for i in ${ROLE_CHANGES[@]} - do - sudo ./ansible/test/bin/ci-molecule.sh ${i} - MOLECULE_RC=$? - if [ ${MOLECULE_RC} -ne "0" ]; then echo "MOLECULE TEST FAILED FOR ${i};";exit 1; fi - done + echo "[WARNING] ---------- THERE ARE NO TESTS DEFINED FOR ${role} ----------" fi - fi + done +} + +#######################################################################$ +# MAIN #$ +#######################################################################$ +FAILED_ROLES=() + +#if ansible role was changed$$ +ROLE_CHANGES=(`git diff HEAD^ HEAD --name-only | grep "ansible/role" | cut -f 1-3 -d "/" | sort -u`) +if [ -z "${ROLE_CHANGES}" ]; then + echo "NO ANSIBLE ROLE TESTS REQUIRED" +else + run_molecule "${ROLE_CHANGES[@]}" +fi +#if ansible was changed + +if `git diff HEAD^ HEAD --name-only | grep -q "ansible/test"`; then + PLAYBOOKS=(`find ansible/test -name "play-*"`) + run_molecule "${PLAYBOOKS[@]}" +else + echo "NO FULL ANSIBLE TEST REQUIRED"; +fi #if build was changed - if `git diff HEAD^ HEAD --name-only | grep -q "build"`; - then echo "TO DO: BUILD TEST" ; - else - echo "NO BUILD TEST REQUIRED" - fi +if `git diff HEAD^ HEAD --name-only | grep -q "build"`; then + echo "TO DO: BUILD TEST" ; +else + echo "NO BUILD TEST REQUIRED" +fi #if documentation was changed - if `git diff HEAD^ HEAD --name-only | grep -q "docs"`; - then echo "TO DO: DOC TEST"; - else - echo "NO DOC TEST REQUIRED" - fi +if `git diff HEAD^ HEAD --name-only | grep -q "docs"`; then + echo "TO DO: DOC TEST"; +else + echo "NO DOC TEST REQUIRED" +fi + +#SUMMARY RESULTS + +if [ -z ${FAILED_ROLES} ]; then + echo "All verification steps passed" +else + echo "Verification failed for ${FAILED_ROLES[*]}" + exit 1 +fi -- cgit 1.2.3-korg