-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yaml
69 lines (59 loc) · 2.31 KB
/
.travis.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
---
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-ubuntu1804-ansible
# TODO: Support for RedHat-based systems.
#- docker_repo: geerlingguy/docker-centos7-ansible
#- docker_repo: geerlingguy/docker-fedora27-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
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-iptables:ro
${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-iptables/tests/test.yaml
# Ensure the role/playbook runs without errors or failures.
- >
docker container exec --tty "$(cat ${container_id})" env TERM=xterm
ansible-playbook /etc/ansible/roles/ansible-role-iptables/tests/test.yaml
# Run the role/playbook again to test idempotence.
- idempotence=$(mktemp)
- >
docker container exec "$(cat ${container_id})"
ansible-playbook /etc/ansible/roles/ansible-role-iptables/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)
# After build failures, these commands provide additional diagnostics.
#after_failure:
#- echo "something_interesting"
after_script:
- docker container rm -f "$(cat ${container_id})"