Merge pull request #2539 from mattclay/module-tests

Add module integration tests on shippable.
This commit is contained in:
Matt Clay 2016-07-08 14:25:01 -07:00 committed by GitHub
commit 618e740d52
3 changed files with 106 additions and 0 deletions

48
shippable.yml Normal file
View file

@ -0,0 +1,48 @@
language: python
env:
matrix:
- TEST=none
matrix:
exclude:
- env: TEST=none
include:
- env: TEST=integration IMAGE=ansible/ansible:centos6
- env: TEST=integration IMAGE=ansible/ansible:centos7
- env: TEST=integration IMAGE=ansible/ansible:fedora-rawhide
- env: TEST=integration IMAGE=ansible/ansible:fedora23
- env: TEST=integration IMAGE=ansible/ansible:opensuseleap
- env: TEST=integration IMAGE=ansible/ansible:ubuntu1204 PRIVILEGED=true
- env: TEST=integration IMAGE=ansible/ansible:ubuntu1404 PRIVILEGED=true
- env: TEST=integration IMAGE=ansible/ansible:ubuntu1604
build:
pre_ci_boot:
options: "--privileged=false --net=bridge"
ci:
- test/utils/shippable/ci.sh
integrations:
notifications:
- integrationName: email
type: email
on_success: never
on_failure: never
on_start: never
on_pull_request: never
- integrationName: irc
type: irc
recipients:
- "chat.freenode.net#ansible-notices"
on_success: change
on_failure: always
on_start: never
on_pull_request: always
- integrationName: slack
type: slack
recipients:
- "#shippable"
on_success: change
on_failure: always
on_start: never
on_pull_request: never

7
test/utils/shippable/ci.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash -eux
set -o pipefail
source_root=$(python -c "from os import path; print(path.abspath(path.join(path.dirname('$0'), '../../..')))")
"${source_root}/test/utils/shippable/${TEST}.sh" 2>&1 | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

View file

@ -0,0 +1,51 @@
#!/bin/bash -eux
set -o pipefail
ansible_repo_url="https://github.com/ansible/ansible.git"
is_pr="${IS_PULL_REQUEST}"
build_dir="${SHIPPABLE_BUILD_DIR}"
repo="${REPO_NAME}"
if [ "${is_pr}" != "true" ]; then
echo "Module integration tests are only supported on pull requests."
exit 1
fi
case "${repo}" in
"ansible-modules-core")
this_module_group="core"
other_module_group="extras"
;;
"ansible-modules-extras")
this_module_group="extras"
other_module_group="core"
;;
*)
echo "Unsupported repo name: ${repo}"
exit 1
;;
esac
modules_tmp_dir="${build_dir}.tmp"
this_modules_dir="${build_dir}/lib/ansible/modules/${this_module_group}"
other_modules_dir="${build_dir}/lib/ansible/modules/${other_module_group}"
cd /
mv "${build_dir}" "${modules_tmp_dir}"
git clone "${ansible_repo_url}" "${build_dir}"
cd "${build_dir}"
rmdir "${this_modules_dir}"
mv "${modules_tmp_dir}" "${this_modules_dir}"
mv "${this_modules_dir}/shippable" "${build_dir}"
git submodule init "${other_modules_dir}"
git submodule sync "${other_modules_dir}"
git submodule update "${other_modules_dir}"
pip install -r test/utils/shippable/modules/generate-tests-requirements.txt --upgrade
pip list
source hacking/env-setup
test/utils/shippable/modules/generate-tests "${this_module_group}" --verbose | /bin/bash -eux