engine: Add docs verify job
[infra/cicd.git] / jjb / engine / scripts / engine-verify-tox.sh
1 #!/bin/bash
2
3 # ============LICENSE_START=======================================================
4 #  Copyright (C) 2019 The Nordix Foundation. All rights reserved.
5 # ================================================================================
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
9 #
10 #      http://www.apache.org/licenses/LICENSE-2.0
11 #
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.
17 #
18 # SPDX-License-Identifier: Apache-2.0
19 # ============LICENSE_END=========================================================
20
21 set -o nounset
22 set -o errexit
23 set -o pipefail
24
25 #-------------------------------------------------------------------------------
26 # Various tests are run using tox such as docs, yamllint, ansible-lint, and
27 # shellcheck. Some repos do not have certain types of files and those repos
28 # are ignored using REPOS_TO_IGNORE variable which is controlled within the
29 # jjb per lint type.
30 #-------------------------------------------------------------------------------
31 run_tox() {
32
33   echo "Info  : Preparing to run tox for the repo $GERRIT_PROJECT"
34
35   # set and export defaults
36   LINT_TYPE="${LINT_TYPE:-ansible-lint}"
37   REPOS_TO_IGNORE="${REPOS_TO_IGNORE:-none}"
38   VERBOSITY=${VERBOSITY:-false}
39   export LINT_TYPE REPOS_TO_IGNORE VERBOSITY
40
41   # check if the change is for a repo we should ignore
42   if [[ "$REPOS_TO_IGNORE" =~ "$GERRIT_PROJECT" ]]; then
43     echo "Info  : Ignoring change as $GERRIT_PROJECT is in ignore list!"
44     echo "Info  : Done!"
45     exit 0
46   fi
47
48   # ensure we are in job build WORKSPACE
49   cd "$WORKSPACE"
50
51   # set DEBIAN_FRONTEND to run apt non-interactively
52   DEBIAN_FRONTEND=noninteractive
53   export DEBIAN_FRONTEND
54
55   # install dependencies
56   echo "Info  : Install python3.6-minimal python3-distutils virtualenv using apt"
57   redirect_cmd sudo apt update
58   redirect_cmd sudo apt install -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y python3.6-minimal python3-distutils virtualenv
59
60   # create and activate virtualenv
61   echo "Info  : Create and activate python virtualenv"
62   redirect_cmd virtualenv -p python3.6 .venv
63   set +u
64   redirect_cmd source .venv/bin/activate
65   set -u
66
67   # install test-requirements
68   echo "Info  : Install python packages listed in test-requirements.txt using pip"
69   redirect_cmd pip install --force-reinstall -r test-requirements.txt
70
71   # run tox
72   echo "Info  : Run $LINT_TYPE using tox"
73   echo "----------------------------------------------------"
74   tox -e "$LINT_TYPE"
75   echo "----------------------------------------------------"
76   echo "Info  : Done!"
77
78 }
79 #-------------------------------------------------------------------------------
80 # In some cases, it is useful to see all the output generated by commands so
81 # this function makes it possible for users to achieve that by not redirecting
82 # output to /dev/null when verbosity is enabled
83 #-------------------------------------------------------------------------------
84 redirect_cmd() {
85
86   if [[ "$VERBOSITY" == "false" ]]; then
87     "$@" > /dev/null 2>&1
88   else
89     "$@"
90   fi
91
92 }
93 #-------------------------------------------------------------------------------
94 # run tox
95 #-------------------------------------------------------------------------------
96
97 run_tox "$@"
98
99 # vim: set ts=2 sw=2 expandtab: