| #! /usr/bin/env bash |
| # COPYRIGHT NOTICE STARTS HERE |
| # |
| # Copyright 2018 © Samsung Electronics Co., Ltd. |
| # |
| # 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. |
| # |
| # COPYRIGHT NOTICE ENDS HERE |
| ############################################################################### |
| # This script performs Jenkins Change Verification for ONAP Offline Installer # |
| # No parameters are expected # |
| ############################################################################### |
| |
| 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 |
| } |
| |
| 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 |
| echo "[WARNING] ---------- THERE ARE NO TESTS DEFINED FOR ${role} ----------" |
| 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 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 |
| |
| #SUMMARY RESULTS |
| |
| if [ -z ${FAILED_ROLES} ]; then |
| echo "All verification steps passed" |
| else |
| echo "Verification failed for ${FAILED_ROLES[*]}" |
| exit 1 |
| fi |
| |