#!/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 and export defaults LINT_TYPE="${LINT_TYPE:-ansible-lint}" REPOS_TO_IGNORE="${REPOS_TO_IGNORE:-none}" VERBOSITY=${VERBOSITY:-false} export LINT_TYPE REPOS_TO_IGNORE VERBOSITY # 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.7-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.7-minimal python3-distutils virtualenv # create and activate virtualenv echo "Info : Create and activate python virtualenv" redirect_cmd virtualenv -p python3 .venv set +u redirect_cmd source .venv/bin/activate set -u # install only tox since the rest of the requirements are installed by tox itself TOX_PACKAGE=$(grep "^tox==" test-requirements.txt) echo "Info : Install $TOX_PACKAGE" redirect_cmd pip install --force-reinstall "$TOX_PACKAGE" # 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: