73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
|
---
|
||
|
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})"
|