engine: Refactor tox jobs
Change-Id: I6776a10b472e9767ecc19896fbd7835880784adc
diff --git a/jjb/engine/scripts/engine-verify-tox.sh b/jjb/engine/scripts/engine-verify-tox.sh
new file mode 100755
index 0000000..b3a64c6
--- /dev/null
+++ b/jjb/engine/scripts/engine-verify-tox.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 The Nordix Foundation. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+set -o nounset
+set -o errexit
+set -o pipefail
+
+#-------------------------------------------------------------------------------
+# Various tests are run using tox such as docs, yamllint, ansible-lint, and
+# shellcheck. Some repos do not have certain types of files and those repos
+# are ignored using REPOS_TO_IGNORE variable which is controlled within the
+# jjb per lint type.
+#-------------------------------------------------------------------------------
+run_tox() {
+
+ echo "Info : Preparing to run tox for the repo $GERRIT_PROJECT"
+
+ # set defaults
+ VERBOSITY=${VERBOSITY:-false}
+ LINT_TYPE="${LINT_TYPE:-ansible-lint}"
+ export VERBOSITY LINT_TYPE
+
+ # check if the change is for a repo we should ignore
+ if [[ "$REPOS_TO_IGNORE" =~ "$GERRIT_PROJECT" ]]; then
+ echo "Info : Ignoring change as $GERRIT_PROJECT is in ignore list!"
+ echo "Info : Done!"
+ exit 0
+ fi
+
+ # ensure we are in job build WORKSPACE
+ cd "$WORKSPACE"
+
+ # set DEBIAN_FRONTEND to run apt non-interactively
+ DEBIAN_FRONTEND=noninteractive
+ export DEBIAN_FRONTEND
+
+ # install dependencies
+ echo "Info : Install python3.6-minimal python3-distutils virtualenv using apt"
+ redirect_cmd sudo apt update
+ redirect_cmd sudo apt install -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y python3.6-minimal python3-distutils virtualenv
+
+ # create and activate virtualenv
+ echo "Info : Create and activate python virtualenv"
+ redirect_cmd virtualenv -p python3.6 .venv
+ set +u
+ redirect_cmd source .venv/bin/activate
+ set -u
+
+ # install test-requirements
+ echo "Info : Install python packages listed in test-requirements.txt using pip"
+ redirect_cmd pip install --force-reinstall -r test-requirements.txt
+
+ # run tox
+ echo "Info : Run $LINT_TYPE using tox"
+ echo "----------------------------------------------------"
+ tox -e "$LINT_TYPE"
+ echo "----------------------------------------------------"
+ echo "Info : Done!"
+
+}
+#-------------------------------------------------------------------------------
+# In some cases, it is useful to see all the output generated by commands so
+# this function makes it possible for users to achieve that by not redirecting
+# output to /dev/null when verbosity is enabled
+#-------------------------------------------------------------------------------
+redirect_cmd() {
+
+ if [[ "$VERBOSITY" == "false" ]]; then
+ "$@" > /dev/null 2>&1
+ else
+ "$@"
+ fi
+
+}
+#-------------------------------------------------------------------------------
+# run tox
+#-------------------------------------------------------------------------------
+
+run_tox "$@"
+
+# vim: set ts=2 sw=2 expandtab: