Add simple {shell,yaml}-check script
* shellcheck utility allow to determinate common mistakes of bash scripting[1] * yamllint utility allow to determinate common mistakes of yaml files[3] * Add List system dependencies for running common tests Add an other-requirements.txt file containing a cross-platform list of dependencies needed for running included tox-based tests. Also include a tox environment for convenience calling the bindep[2] utility to list any missing system requirements. For other-requirements.txt see also: http://docs.openstack.org/infra/manual/drivers.html#package-requirements [1] http://hackage.haskell.org/package/ShellCheck [2] http://docs.openstack.org/infra/bindep/ [3] https://pypi.python.org/pypi/yamllint/ Change-Id: Ia2498bdb0f7c310ec3d2c2f11f5d3fc08c8b352c
This commit is contained in:
parent
95f75bcbce
commit
aae8d31568
2
other-requirements.txt
Normal file
2
other-requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
shellcheck [platform:ubuntu]
|
||||
zip [platform:ubuntu]
|
55
tools/jenkins/shellcheck.sh
Executable file
55
tools/jenkins/shellcheck.sh
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
WORKSPACE="${WORKSPACE:-${1}}"
|
||||
|
||||
function help_m() {
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
Shellcheck script help message:
|
||||
Please use env variable:
|
||||
- Set directory for scan:
|
||||
export WORKSPACE='/dir/with/sh/files/to/scan'
|
||||
- or directly:
|
||||
./shellcheck.sh "/dir/with/sh/files/to/scan"
|
||||
***********************************************************************
|
||||
EOF
|
||||
}
|
||||
|
||||
function run_check() {
|
||||
local e_count=0
|
||||
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
*
|
||||
* Starting shellcheck against dir:"${WORKSPACE}"
|
||||
*
|
||||
***********************************************************************
|
||||
EOF
|
||||
while read -d '' -r script; do
|
||||
unset RESULT
|
||||
shellcheck "${script}"
|
||||
RESULT=$?
|
||||
if [ ${RESULT} != 0 ]; then
|
||||
((e_count++))
|
||||
fi
|
||||
done < <(find "${WORKSPACE}" -name '*.sh' -print0)
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
*
|
||||
* shellcheck finished with ${e_count} errors.
|
||||
*
|
||||
***********************************************************************
|
||||
EOF
|
||||
if [ "${e_count}" -gt 0 ] ; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
### Body:
|
||||
|
||||
if [[ -z "${WORKSPACE}" ]]; then
|
||||
echo "ERROR: \${WORKSPACE} variable is not set!"
|
||||
help_m
|
||||
exit 1
|
||||
fi
|
||||
run_check
|
55
tools/jenkins/yamllint.sh
Executable file
55
tools/jenkins/yamllint.sh
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
WORKSPACE="${WORKSPACE:-${1}}"
|
||||
|
||||
function help_m() {
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
Yamllint script help message:
|
||||
Please use env variable:
|
||||
- Set directory for scan:
|
||||
export WORKSPACE='/dir/with/sh/files/to/scan'
|
||||
- or directly:
|
||||
./yamllint.sh "/dir/with/sh/files/to/scan"
|
||||
***********************************************************************
|
||||
EOF
|
||||
}
|
||||
|
||||
function run_check() {
|
||||
local e_count=0
|
||||
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
*
|
||||
* Starting yamllint against dir:"${WORKSPACE}"
|
||||
*
|
||||
***********************************************************************
|
||||
EOF
|
||||
while read -d '' -r y_file; do
|
||||
unset RESULT
|
||||
yamllint -d relaxed "${y_file}"
|
||||
RESULT=$?
|
||||
if [ ${RESULT} != 0 ]; then
|
||||
((e_count++))
|
||||
fi
|
||||
done < <(find "${WORKSPACE}" -name '*.yaml' -print0)
|
||||
cat <<-EOF
|
||||
***********************************************************************
|
||||
*
|
||||
* yamllint finished with ${e_count} errors.
|
||||
*
|
||||
***********************************************************************
|
||||
EOF
|
||||
if [ "${e_count}" -gt 0 ] ; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
### Body:
|
||||
|
||||
if [[ -z "${WORKSPACE}" ]]; then
|
||||
echo "ERROR: \${WORKSPACE} variable is not set!"
|
||||
help_m
|
||||
exit 1
|
||||
fi
|
||||
run_check
|
37
tox.ini
37
tox.ini
@ -35,3 +35,40 @@ commands = python -m unittest tests.test_cicd_apps.MuranoCiCdTest.test_deploy_ci
|
||||
[testenv:units]
|
||||
# FIXME!
|
||||
commands = python -m unittest unittests.test_namespaces.TestNamespaces.test_namespaces
|
||||
|
||||
[testenv:bindep]
|
||||
# Do not install any requirements. We want this to be fast and work even if
|
||||
# system dependencies are missing, since it's used to tell you what system
|
||||
# dependencies are missing! This also means that bindep must be installed
|
||||
# separately, outside of the requirements files.
|
||||
deps = bindep
|
||||
commands = bindep test
|
||||
|
||||
[testenv:shellcheck]
|
||||
# 'shellcheck' is not an Python package, so it can be run w\o
|
||||
# virtual env. But tox is a usable wrapper to run any kind of tests -
|
||||
# let's use it for common test-run as well - for unification purposes.
|
||||
whitelist_externals = shellcheck
|
||||
commands = {toxinidir}/tools/jenkins/shellcheck.sh {toxinidir}
|
||||
|
||||
[testenv:yaml-syntaxcheck]
|
||||
deps = yamllint
|
||||
commands = {toxinidir}/tools/jenkins/yamllint.sh {toxinidir}
|
||||
|
||||
[testenv:linters]
|
||||
# linters env - it's a combination of check's (usually syntax)
|
||||
# for aggregate non-destructive run's. Used only in openstack-infra ci for
|
||||
# decrease resource usage.
|
||||
# Current duplicate list:
|
||||
# shellcheck
|
||||
# yaml-syntaxcheck
|
||||
#
|
||||
# We need to suppress exit code from 'command1', to be able run 'command2';
|
||||
# Otherwise, if some command failed - exit code from tox itself will be 1
|
||||
ignore_errors=True
|
||||
deps = yamllint
|
||||
whitelist_externals = shellcheck
|
||||
commands =
|
||||
{toxinidir}/tools/jenkins/shellcheck.sh {toxinidir}
|
||||
{toxinidir}/tools/jenkins/yamllint.sh {toxinidir}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user