2 # COPYRIGHT NOTICE STARTS HERE
4 # Copyright 2018-2021 © Samsung Electronics Co., Ltd.
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
18 # COPYRIGHT NOTICE ENDS HERE
19 ###############################################################################
20 # This script performs Jenkins Change Verification for ONAP Offline Installer #
21 # No parameters are expected #
22 ###############################################################################
24 function prep_ubuntu_16_04_for_molecule() {
25 sudo killall apt apt-get
26 sudo apt-get --assume-yes install software-properties-common
27 sudo add-apt-repository --yes ppa:deadsnakes/ppa
29 sudo apt install --assume-yes python3.8
30 sudo apt install --assume-yes python3.8-venv
33 function run_molecule() {
36 for role in ${roles[@]}
38 if [ -f ${role}/molecule/default/molecule.yml ]; then
39 ./ansible/test/bin/ci-molecule.sh ${role}
41 if [ ${MOLECULE_RC} -ne "0" ]; then FAILED_ROLES+=(${role}); fi
43 echo "[WARNING] ---------- THERE ARE NO TESTS DEFINED FOR ${role} ----------"
48 #######################################################################$
50 #######################################################################$
51 echo "---------- ONAP OFFLINE INSTALLER - CHANGE VERIFICATION START ----------"
53 ALL_PLAYBOOKS=(`ls -d ansible/test/play-*`) # enumerate all playbook tests for later usage
55 prep_ubuntu_16_04_for_molecule > ubuntu_preparation.log
57 # Check for changes in Ansible roles
58 ROLE_CHANGES=(`git diff HEAD^ HEAD --name-only ansible/roles | cut -f 1-3 -d "/" | sort -u`)
59 if [ -z "${ROLE_CHANGES}" ]; then
60 echo "NO ANSIBLE ROLE TESTS REQUIRED"
62 run_molecule "${ROLE_CHANGES[@]}"
65 # Check for changes in Molecule tests
66 if ! $(git diff HEAD^ HEAD --exit-code --quiet ansible/test); then
67 # If there are any changes in ansible/test area
68 MOLECULE_CHANGES=(`git diff HEAD^ HEAD --name-only ansible/test | grep -v "ansible/test/play-.*/"`)
69 if [ ${#MOLECULE_CHANGES[@]} -gt 0 ]; then
70 # If detected changes that affect all playbook tests - run all
71 run_molecule "${ALL_PLAYBOOKS[@]}"
72 # memorize already tested playbooks
73 TESTED_PLAYBOOKS=${ALL_PLAYBOOKS[@]}
75 # Changes only in ansible/test/play-* area - run tests only for changed playbook tests
76 PLAYBOOKS=(`git diff HEAD^ HEAD --name-only ansible/test | cut -f 1-3 -d "/" | sort -u`)
77 run_molecule "${PLAYBOOKS[@]}"
78 # memorize already tested playbooks
79 TESTED_PLAYBOOKS=${PLAYBOOKS[@]}
83 # Check for changes in Ansible playbooks
84 PLAYBOOK_CHANGES=(`git diff HEAD^ HEAD --name-only --relative=ansible ansible/*yml | cut -f 1 -d "."`)
85 if [ ${#PLAYBOOK_CHANGES[@]} -gt 0 ]; then
86 for playbook in ${PLAYBOOK_CHANGES[@]};
88 if [ -d ansible/test/play-${playbook} ]; then
89 # If tests for this playbook are defined
90 if [[ ! ${TESTED_PLAYBOOKS[*]} =~ ${playbook} ]]; then
91 # AND weren't already run
92 run_molecule "ansible/test/play-${playbook}"
95 # Warn that no tests are defined for this playbook
96 echo "[WARNING] ---------- THERE ARE NO TESTS DEFINED FOR ${playbook}.yml PLAYBOOK ----------"
101 # Check for changes in Ansible group_vars or libraries
102 if ! $(git diff HEAD^ HEAD --exit-code --quiet --relative=ansible/group_vars) || \
103 ! $(git diff HEAD^ HEAD --exit-code --quiet --relative=ansible/library); then
104 # If there are any changes in ansible/{group_vars,libraries}
105 # then run all playbook tests except those that've been
107 for playbook in ${ALL_PLAYBOOKS[@]};
109 if [[ ! ${TESTED_PLAYBOOKS[*]} =~ ${playbook} ]]; then
110 run_molecule "${playbook}"
115 # if build was changed
117 if `git diff HEAD^ HEAD --name-only | grep -q "build"`; then
118 echo "TO DO: BUILD TEST" ;
120 echo "NO BUILD TEST REQUIRED"
123 # if documentation was changed
125 if `git diff HEAD^ HEAD --name-only | grep -q "docs"`; then
126 echo "TO DO: DOC TEST";
128 echo "NO DOC TEST REQUIRED"
133 if [ -z ${FAILED_ROLES} ]; then
134 echo "All verification steps passed"
136 echo "Verification failed for ${FAILED_ROLES[*]}"
139 echo "---------- ONAP OFFLINE INSTALLER - CHANGE VERIFICATION END ----------"