.travis.yml 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. ---
  2. sudo: required
  3. env:
  4. - distro: centos7
  5. init: /usr/lib/systemd/systemd
  6. run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
  7. - distro: centos6
  8. init: /sbin/init
  9. run_opts: ""
  10. - distro: ubuntu1604
  11. init: /usr/lib/systemd/systemd
  12. run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
  13. - distro: ubuntu1404
  14. init: /sbin/init
  15. run_opts: ""
  16. - distro: ubuntu1204
  17. init: /sbin/init
  18. run_opts: ""
  19. services:
  20. - docker
  21. before_install:
  22. # Pull container
  23. - 'sudo docker pull geerlingguy/docker-${distro}-ansible:latest'
  24. script:
  25. - container_id=$(mktemp)
  26. # Run container in detached state.
  27. - 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"'
  28. # Install dependencies.
  29. - 'sudo docker exec "$(cat ${container_id})" ansible-galaxy install -r /etc/ansible/roles/role_under_test/tests/requirements.yml'
  30. # Ansible syntax check.
  31. - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check'
  32. # Test role.
  33. - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml'
  34. # Test role idempotence.
  35. - idempotence=$(mktemp)
  36. - sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | tee -a ${idempotence}
  37. - >
  38. tail ${idempotence}
  39. | grep -q 'changed=0.*failed=0'
  40. && (echo 'Idempotence test: pass' && exit 0)
  41. || (echo 'Idempotence test: fail' && exit 1)
  42. # Check if we get an installation page.
  43. - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm curl http://localhost:3000/install'
  44. after_success:
  45. # Clean up.
  46. - 'sudo docker stop "$(cat ${container_id})"'
  47. notifications:
  48. webhooks: https://galaxy.ansible.com/api/v1/notifications/