Add full support for Shippable CI.

This commit is contained in:
Matt Clay 2016-06-01 21:08:14 -07:00
commit b0e1efbd62
5 changed files with 155 additions and 12 deletions

View file

@ -0,0 +1,10 @@
#!/bin/bash -eux
source_root=$(python -c "from os import path; print(path.abspath(path.join(path.dirname('$0'), '../../..')))")
cd "${source_root}"
test/code-smell/replace-urlopen.sh .
test/code-smell/use-compat-six.sh lib
test/code-smell/boilerplate.sh
test/code-smell/required-and-default-attributes.sh

View file

@ -0,0 +1,91 @@
#!/bin/bash -eux
source_root=$(python -c "from os import path; print(path.abspath(path.join(path.dirname('$0'), '../../..')))")
test_image="${IMAGE}"
test_privileged="${PRIVILEGED:-false}"
test_flags="${TEST_FLAGS:-}"
test_target="${TARGET:-}"
test_ansible_dir="${TEST_ANSIBLE_DIR:-/root/ansible}"
http_image="${HTTP_IMAGE:-ansible/ansible:httptester}"
keep_containers="${KEEP_CONTAINERS:-}"
copy_source="${COPY_SOURCE:-}"
if [ "${SHIPPABLE_BUILD_DIR:-}" ]; then
host_shared_dir="/home/shippable/cache/build-${BUILD_NUMBER}"
controller_shared_dir="/home/shippable/cache/build-${BUILD_NUMBER}"
else
host_shared_dir="${source_root}"
controller_shared_dir=""
fi
if [ "${copy_source}" ]; then
test_shared_dir="/tmp/shared-dir"
else
test_shared_dir="${test_ansible_dir}"
fi
container_id=
httptester_id=
function show_environment
{
docker ps
if [ -d /home/shippable/cache ]; then
ls -l /home/shippable/cache
fi
}
function cleanup
{
if [ "${controller_shared_dir}" ]; then
cp -av "${controller_shared_dir}/shippable" "${SHIPPABLE_BUILD_DIR}"
rm -rf "${controller_shared_dir}"
fi
if [ "${keep_containers}" == "" ]; then
if [ "${container_id}" ]; then
docker rm -f "${container_id}"
fi
if [ "${httptester_id}" ]; then
docker rm -f "${httptester_id}"
fi
fi
show_environment
}
trap cleanup EXIT INT TERM
show_environment
if [ "${controller_shared_dir}" ]; then
cp -a "${SHIPPABLE_BUILD_DIR}" "${controller_shared_dir}"
fi
httptester_id=$(docker run -d "${http_image}")
container_id=$(docker run -d \
-v "/sys/fs/cgroup:/sys/fs/cgroup:ro" \
-v "${host_shared_dir}:${test_shared_dir}" \
--link="${httptester_id}:ansible.http.tests" \
--link="${httptester_id}:sni1.ansible.http.tests" \
--link="${httptester_id}:sni2.ansible.http.tests" \
--link="${httptester_id}:fail.ansible.http.tests" \
--privileged="${test_privileged}" \
"${test_image}")
show_environment
docker exec "${container_id}" pip install junit-xml
if [ "${copy_source}" ]; then
docker exec "${container_id}" cp -a "${test_shared_dir}" "${test_ansible_dir}"
fi
docker exec "${container_id}" mkdir -p "${test_shared_dir}/shippable/testresults"
docker exec "${container_id}" /bin/sh -c "cd '${test_ansible_dir}' && . hacking/env-setup && cd test/integration && \
JUNIT_OUTPUT_DIR='${test_shared_dir}/shippable/testresults' ANSIBLE_CALLBACK_WHITELIST=junit \
HTTPTESTER=1 TEST_FLAGS='${test_flags}' LC_ALL=en_US.utf-8 make ${test_target}"

31
test/utils/shippable/sanity.sh Executable file
View file

@ -0,0 +1,31 @@
#!/bin/bash -eux
source_root=$(python -c "from os import path; print(path.abspath(path.join(path.dirname('$0'), '../../..')))")
install_deps="${INSTALL_DEPS:-}"
cd "${source_root}"
if [ "${TOXENV}" = 'py24' ]; then
if [ "${install_deps}" != "" ]; then
add-apt-repository ppa:fkrull/deadsnakes && apt-get update -qq && apt-get install python2.4 -qq
fi
python2.4 -V
python2.4 -m compileall -fq -x 'module_utils/(a10|rax|openstack|ec2|gce|docker_common|azure_rm_common|vca|vmware).py' lib/ansible/module_utils
else
if [ "${install_deps}" != "" ]; then
pip install tox
fi
xunit_dir="${source_root}/shippable/testresults"
coverage_dir="${source_root}/shippable/codecoverage"
mkdir -p "${xunit_dir}"
mkdir -p "${coverage_dir}"
xunit_file="${xunit_dir}/nosetests-xunit.xml"
coverage_file="${coverage_dir}/nosetests-coverage.xml"
TOX_TESTENV_PASSENV=NOSETESTS NOSETESTS="nosetests --with-xunit --xunit-file='${xunit_file}' --cover-xml --cover-xml-file='${coverage_file}'" tox
fi