--- version: ~> 1.0 os: linux language: shell env: - docker_repo: resin/rpi-raspbian - docker_repo: geerlingguy/docker-debian10-ansible - docker_repo: geerlingguy/docker-debian9-ansible - docker_repo: geerlingguy/docker-centos7-ansible - docker_repo: geerlingguy/docker-fedora30-ansible - docker_repo: geerlingguy/docker-ubuntu1804-ansible - docker_repo: geerlingguy/docker-ubuntu1604-ansible jobs: # TODO: Fix these failures? allow_failures: # TODO: Fixing the Raspbian build is going to require QEMU and # binfmt_misc support. See: # https://www.balena.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/ # In the mean time, allow this to fail. - env: docker_repo=resin/rpi-raspbian - env: docker_repo=geerlingguy/docker-centos7-ansible - env: docker_repo=geerlingguy/docker-fedora30-ansible install: - docker image pull ${docker_repo} - container_id=$(mktemp) - > docker container run --detach --privileged --volume /sys/fs/cgroup:/sys/fs/cgroup:ro --volume ${PWD}:/etc/ansible/roles/ansible-role-prosody:ro --publish 5222:5222 --publish 5269:5269 ${docker_repo}:latest > ${container_id} # Bootstrap to ensure Ansible is available in the container. # This is to ensure that the containers not already pre-imaged with # Ansible installed (i.e., Raspbian image) will have it available. - > docker container exec --tty $(cat ${container_id}) env TERM=xterm pip install ansible script: # Check Ansible role/playbook syntax. - > docker container exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook --syntax-check /etc/ansible/roles/ansible-role-prosody/tests/test.yaml # Ensure the role/playbook runs without errors or failures. - > docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/ansible-role-prosody/tests/test.yaml # Run the role/playbook again to test idempotence. - idempotence=$(mktemp) - > docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/ansible-role-prosody/tests/test.yaml | tee -a ${idempotence} - > tail ${idempotence} | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && exit 1) - nc -vz localhost 5222 - nc -vz localhost 5269 after_script: - docker container rm -f "$(cat ${container_id})"