Chore: Updates to improve overall robustness of robot framework tooling
Improved scripts to better meet modern coding best practices. Improved
many script functions and behaviours to allow some code to run outside
Jenkins jobs. Addressed many warnings produced by linting tools.
Issue-ID: CCSDK-3820
Signed-off-by: Matthew Watkins <mwatkins@linuxfoundation.org>
Change-Id: I2e4f702a0b58cbace341c31669b4ffcb023d499c
diff --git a/jjb/integration/prepare-csit.sh b/jjb/integration/prepare-csit.sh
index 1052bff..0db140f 100644
--- a/jjb/integration/prepare-csit.sh
+++ b/jjb/integration/prepare-csit.sh
@@ -24,18 +24,48 @@
ROBOT_INSTALLER='include-raw-integration-install-robotframework-py3.sh'
-if !(which git > /dev/null 2>&1); then
- echo "GIT binary not found current PATH"
- echo $PATH; exit 1
+# Allows testing for root permissions
+REQ_USER=$(id -un)
+
+if ! (which git > /dev/null 2>&1); then
+ echo "GIT binary not found in current PATH"
+ # Add missing package to prevent script/job failures
+ if (grep Ubuntu /etc/os-release > /dev/null 2>&1) || \
+ (grep Debian /etc/os-release > /dev/null 2>&1); then
+ echo "Installing package dependency for Ubuntu/Debian"
+ if [[ "${REQ_USER}" == 'root' ]]; then
+ apt-get update
+ apt-get install -y git
+ else
+ sudo apt-get update
+ sudo apt-get install -y git
+ fi
+ elif (grep RedHat /etc/os-release > /dev/null 2>&1) || \
+ (grep CentOS /etc/os-release > /dev/null 2>&1); then
+ echo "Installing package dependency for CentOS/RedHat"
+ if [[ "${REQ_USER}" == 'root' ]]; then
+ yum install -y git
+ else
+ sudo yum install -y git
+ fi
+ else
+ echo "Warning: unmatched OS/distribution"
+ echo "Missing software will not be installed"
+ fi
fi
-if [ -z "$WORKSPACE" ]; then
- # shellcheck disable=SC2155
- export WORKSPACE=`git rev-parse --show-toplevel`
+if [[ -z "${WORKSPACE}" ]]; then
+ if (git rev-parse --show-toplevel > /dev/null 2>&1); then
+ WORKSPACE=$(git rev-parse --show-toplevel)
+ export WORKSPACE
+ else
+ WORKSPACE=$(pwd)
+ export WORKSPACE
+ fi
fi
# shellcheck disable=SC2034
-TESTPLANDIR=${WORKSPACE}/${TESTPLAN}
+TESTPLANDIR="${WORKSPACE}/${TESTPLAN}"
# Python version should match that used to setup
# robot-framework in other jobs/stages
@@ -56,22 +86,26 @@
# Assume that if ROBOT3_VENV is set, virtualenv
# with system site packages can be activated
-if [ -f ${WORKSPACE}/env.properties ]; then
- source ${WORKSPACE}/env.properties
+if [[ -f "${WORKSPACE}/env.properties" ]]; then
+ source "${WORKSPACE}/env.properties"
+elif [[ -f /tmp/env.properties ]]; then
+ source /tmp/env.properties
fi
-if [ -f ${ROBOT3_VENV}/bin/activate ]; then
- source ${ROBOT3_VENV}/bin/activate
+
+if [[ -f "${ROBOT3_VENV}/bin/activate" ]]; then
+ source "${ROBOT3_VENV}/bin/activate"
else
# Robot framework was not found
# clone ci-management repository and use install script
git clone "https://gerrit.onap.org/r/ci-management" \
/tmp/ci-management
- source /tmp/ci-management/jjb/integration/${ROBOT_INSTALLER}
+ # shellcheck disable=SC1090
+ source "/tmp/ci-management/jjb/integration/${ROBOT_INSTALLER}"
fi
# install eteutils
-mkdir -p ${ROBOT3_VENV}/src/onap
-rm -rf ${ROBOT3_VENV}/src/onap/testsuite
+mkdir -p "${ROBOT3_VENV}/src/onap"
+rm -rf "${ROBOT3_VENV}/src/onap/testsuite"
# Source from the Nexus repository
python3 -m pip install --upgrade \
--extra-index-url="https://nexus3.onap.org/repository/PyPi.staging/simple" \