tests: build Docker images in parallel

pull/350/head
David Wilson 6 years ago
parent 8e35103185
commit e1306bb03d

@ -61,8 +61,11 @@
when: distro == "CentOS" when: distro == "CentOS"
- file: - file:
path: /var/cache/apt path: "{{item}}"
state: absent state: absent
with_items:
- /var/cache/apt
- /var/lib/apt
when: distro == "Debian" when: distro == "Debian"
- user: - user:

@ -34,6 +34,7 @@
}}" }}"
tasks: tasks:
- name: Disable non-localhost SSH for Mitogen users - name: Disable non-localhost SSH for Mitogen users
when: false
blockinfile: blockinfile:
path: /etc/ssh/sshd_config path: /etc/ssh/sshd_config
block: | block: |

@ -6,6 +6,7 @@ Build the Docker images used for testing.
import commands import commands
import os import os
import tempfile
import shlex import shlex
import subprocess import subprocess
@ -19,25 +20,36 @@ def sh(s, *args):
return shlex.split(s) return shlex.split(s)
for base_image, name in [('debian:stretch', 'debian'),
label_by_id = {}
for base_image, label in [('debian:stretch', 'debian'),
('centos:6', 'centos6'), ('centos:6', 'centos6'),
('centos:7', 'centos7')]: ('centos:7', 'centos7')]:
args = sh('docker run --rm -it -d %s /bin/bash', base_image) args = sh('docker run --rm -it -d -h mitogen-%s %s /bin/bash',
label, base_image)
container_id = subprocess.check_output(args).strip() container_id = subprocess.check_output(args).strip()
label_by_id[container_id] = label
with tempfile.NamedTemporaryFile() as fp:
fp.write('[all]\n')
for id_, label in label_by_id.items():
fp.write('%s ansible_host=%s\n' % (label, id_))
fp.flush()
try: try:
subprocess.check_call( subprocess.check_call(
cwd=BASEDIR, cwd=BASEDIR,
args=sh(''' args=sh('ansible-playbook -i %s -c docker setup.yml', fp.name),
ansible-playbook -i %s, -c docker setup.yml -vvv
''', container_id)
) )
for container_id, label in label_by_id.items():
subprocess.check_call(sh(''' subprocess.check_call(sh('''
docker commit docker commit
--change 'EXPOSE 22' --change 'EXPOSE 22'
--change 'CMD ["/usr/sbin/sshd", "-D"]' --change 'CMD ["/usr/sbin/sshd", "-D"]'
%s %s
mitogen/%s-test mitogen/%s-test
''', container_id, name)) ''', container_id, label))
finally: finally:
subprocess.check_call(sh('docker rm -f %s', container_id)) subprocess.check_call(sh('docker rm -f %s', ' '.join(label_by_id)))

Loading…
Cancel
Save