2020-03-11 19:46:18 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -o pipefail -eux
|
|
|
|
|
|
|
|
declare -a args
|
|
|
|
IFS='/:' read -ra args <<< "$1"
|
|
|
|
|
|
|
|
script="${args[0]}"
|
|
|
|
|
|
|
|
test="$1"
|
|
|
|
|
|
|
|
docker images ansible/ansible
|
|
|
|
docker images quay.io/ansible/*
|
|
|
|
docker ps
|
|
|
|
|
|
|
|
for container in $(docker ps --format '{{.Image}} {{.ID}}' | grep -v '^drydock/' | sed 's/^.* //'); do
|
|
|
|
docker rm -f "${container}" || true # ignore errors
|
|
|
|
done
|
|
|
|
|
|
|
|
docker ps
|
|
|
|
|
|
|
|
if [ -d /home/shippable/cache/ ]; then
|
|
|
|
ls -la /home/shippable/cache/
|
|
|
|
fi
|
|
|
|
|
|
|
|
command -v python
|
|
|
|
python -V
|
|
|
|
|
|
|
|
command -v pip
|
|
|
|
pip --version
|
|
|
|
pip list --disable-pip-version-check
|
|
|
|
|
|
|
|
export PATH="${PWD}/bin:${PATH}"
|
|
|
|
export PYTHONIOENCODING='utf-8'
|
|
|
|
|
|
|
|
if [ "${JOB_TRIGGERED_BY_NAME:-}" == "nightly-trigger" ]; then
|
|
|
|
COVERAGE=yes
|
|
|
|
COMPLETE=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "${COVERAGE:-}" ]; then
|
|
|
|
# on-demand coverage reporting triggered by setting the COVERAGE environment variable to a non-empty value
|
|
|
|
export COVERAGE="--coverage"
|
|
|
|
elif [[ "${COMMIT_MESSAGE}" =~ ci_coverage ]]; then
|
|
|
|
# on-demand coverage reporting triggered by having 'ci_coverage' in the latest commit message
|
|
|
|
export COVERAGE="--coverage"
|
|
|
|
else
|
|
|
|
# on-demand coverage reporting disabled (default behavior, always-on coverage reporting remains enabled)
|
|
|
|
export COVERAGE="--coverage-check"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "${COMPLETE:-}" ]; then
|
|
|
|
# disable change detection triggered by setting the COMPLETE environment variable to a non-empty value
|
|
|
|
export CHANGED=""
|
|
|
|
elif [[ "${COMMIT_MESSAGE}" =~ ci_complete ]]; then
|
|
|
|
# disable change detection triggered by having 'ci_complete' in the latest commit message
|
|
|
|
export CHANGED=""
|
|
|
|
else
|
|
|
|
# enable change detection (default behavior)
|
|
|
|
export CHANGED="--changed"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${IS_PULL_REQUEST:-}" == "true" ]; then
|
|
|
|
# run unstable tests which are targeted by focused changes on PRs
|
|
|
|
export UNSTABLE="--allow-unstable-changed"
|
|
|
|
else
|
|
|
|
# do not run unstable tests outside PRs
|
|
|
|
export UNSTABLE=""
|
|
|
|
fi
|
|
|
|
|
|
|
|
virtualenv --python /usr/bin/python3.7 ~/ansible-venv
|
|
|
|
set +ux
|
|
|
|
. ~/ansible-venv/bin/activate
|
|
|
|
set -ux
|
|
|
|
|
|
|
|
#pip install ansible==2.9.0 --disable-pip-version-check
|
|
|
|
pip install git+https://github.com/ansible/ansible.git@temp-2.10-devel --disable-pip-version-check
|
|
|
|
|
|
|
|
COLLECTION_DIR="${HOME}/.ansible/ansible_collections/"
|
2020-03-17 09:59:17 +01:00
|
|
|
TEST_DIR="${COLLECTION_DIR}/community/general"
|
2020-03-11 19:46:18 +01:00
|
|
|
mkdir -p "${TEST_DIR}"
|
|
|
|
cp -aT "${SHIPPABLE_BUILD_DIR}" "${TEST_DIR}"
|
|
|
|
cd "${TEST_DIR}"
|
|
|
|
|
|
|
|
function cleanup
|
|
|
|
{
|
|
|
|
if [ -d tests/output/coverage/ ]; then
|
|
|
|
if find tests/output/coverage/ -mindepth 1 -name '.*' -prune -o -print -quit | grep -q .; then
|
|
|
|
# for complete on-demand coverage generate a report for all files with no coverage on the "other" job so we only have one copy
|
|
|
|
if [ "${COVERAGE}" == "--coverage" ] && [ "${CHANGED}" == "" ] && [ "${test}" == "sanity/1" ]; then
|
|
|
|
stub="--stub"
|
|
|
|
else
|
|
|
|
stub=""
|
|
|
|
fi
|
|
|
|
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
ansible-test coverage xml --color -v --requirements --group-by command --group-by version ${stub:+"$stub"}
|
|
|
|
cp -a tests/output/reports/coverage=*.xml shippable/codecoverage/
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -d tests/output/junit/ ]; then
|
|
|
|
cp -aT tests/output/junit/ shippable/testresults/
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -d tests/output/data/ ]; then
|
|
|
|
cp -a tests/output/data/ shippable/testresults/
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -d tests/output/bot/ ]; then
|
|
|
|
cp -aT tests/output/bot/ shippable/testresults/
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
|
|
|
if [[ "${COVERAGE:-}" == "--coverage" ]]; then
|
|
|
|
timeout=60
|
|
|
|
else
|
|
|
|
timeout=45
|
|
|
|
fi
|
|
|
|
|
|
|
|
# STAR: HACK install dependencies
|
|
|
|
(
|
|
|
|
#ansible.windows doesn't install from Galaxy
|
|
|
|
mkdir /tmp/collection_deps
|
|
|
|
git clone https://github.com/ansible-collections/ansible.windows.git /tmp/collection_deps/ansible.windows
|
|
|
|
cd /tmp/collection_deps/ansible.windows
|
|
|
|
ansible-galaxy collection build
|
|
|
|
ansible-galaxy collection install /tmp/collection_deps/ansible.windows/ansible-windows* -p "${COLLECTION_DIR}"
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
#ansible-galaxy collection install ansible.windows -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install ansible.posix -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install community.crypto -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install ansible.netcommon -p "${COLLECTION_DIR}"
|
|
|
|
|
|
|
|
# unit tests
|
|
|
|
ansible-galaxy collection install community.kubernetes -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install netbox.netbox -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install netapp.ontap -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install cisco.meraki -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install fortinet.fortios -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install junipernetworks.junos -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install cisco.aci -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install google.cloud -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install community.kubernetes -p "${COLLECTION_DIR}"
|
|
|
|
ansible-galaxy collection install f5networks.f5_modules -p "${COLLECTION_DIR}"
|
|
|
|
|
|
|
|
# END: HACK
|
|
|
|
|
|
|
|
ansible-test env --dump --show --timeout "${timeout}" --color -v
|
|
|
|
|
|
|
|
"tests/utils/shippable/check_matrix.py"
|
|
|
|
"tests/utils/shippable/${script}.sh" "${test}"
|