forked from juju4/ansible-ipv6
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml.docker
148 lines (137 loc) · 5.6 KB
/
.travis.yml.docker
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
---
## from https://github.com/geerlingguy/ansible-role-apache/blob/master/.travis.yml
sudo: required
env:
# - distribution: centos
# version: 6
# init: /sbin/init
# run_opts: ""
- distribution: centos
version: 8
suite: default
init: /usr/lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: centos
version: 7
suite: default
init: /usr/lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: ubuntu
version: 18.04
suite: default
init: /lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: ubuntu
version: 16.04
suite: default
init: /lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: alpine
version: "3.10"
suite: default
init: /sbin/init
run_opts: ""
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: debian
version: 10
suite: default
init: /lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: centos
version: 7
suite: default-harden
init: /usr/lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
- distribution: ubuntu
version: 18.04
suite: default-harden
init: /lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.8.4
ansible_extra_vars: ""
# past ansible version
- distribution: centos
version: 7
suite: default
init: /usr/lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.7.13
ansible_extra_vars: ""
- distribution: ubuntu
version: 18.04
suite: default
init: /lib/systemd/systemd
run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
ansible_version: 2.7.13
ansible_extra_vars: ""
# upcoming ansible version
# - distribution: ubuntu
# version: 16.04
# init: /lib/systemd/systemd
# run_opts: "'--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro'"
# ansible_version: 2.5.0b2
# ansible_extra_vars: ""
services:
- docker
before_install:
# - sudo apt-get update
# Pull container
- 'sudo docker pull ${distribution}:${version}'
- env
- pwd
- find -ls
- "[ -f get-dependencies.sh ] && sh -x get-dependencies.sh"
- cp test/travis/initctl_faker test/
# Customize container
- 'sudo docker build --rm=true --file=test/travis/Dockerfile.${distribution}-${version} --tag=${distribution}-${version}:ansible test'
before_script:
- container_id=$(mktemp)
# Run container in detached state
## Note: mapping urandom/random to have better entropy. Normally, have rng-tools or haveged to handle that but not running inside docker images we have
- 'sudo docker run --detach -v /dev/urandom:/dev/random --volume="${PWD%/*}":/etc/ansible/roles:ro ${run_opts} ${distribution}-${version}:ansible "${init}" > "${container_id}"'
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm pip install --upgrade pip'
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm pip install ansible==${ansible_version}'
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible --version'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ip addr || ifconfig -a || true'
script:
# Ansible syntax check.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/juju4.ipv6/test/integration/${suite}/default.yml --syntax-check'
# Test role.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/juju4.ipv6/test/integration/${suite}/default.yml -vv ${ansible_extra_vars}'
# Test role idempotence.
- >
sudo docker exec "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/juju4.ipv6/test/integration/${suite}/default.yml ${ansible_extra_vars}
| tee /tmp/idempotency.log
| grep -q 'changed=0.*failed=0'
&& (echo 'Idempotence test: pass' && exit 0)
|| (echo 'Idempotence test: fail' && cat /tmp/idempotency.log && exit 0)
after_failure:
# Check what happened on systemd systems.
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm systemctl -l --no-pager status'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm journalctl -xe --no-pager'
after_script:
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /proc/cmdline'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm sysctl -a |grep ipv6'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /etc/modprobe.d/blacklist.conf'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /etc/modprobe.conf'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm cat /etc/sysconfig/network'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ip addr || ifconfig -a || true'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ls /etc/init.d/'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ls /usr/lib/systemd/system/'
# Clean up
- 'sudo docker stop "$(cat ${container_id})"'
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/