Ubuntu 16.04 (Xenial) Docker image for Ansible role testing in Travis-CI.
TL;DR:
docker pull kblr/ubuntu16.04-ansible
I use Docker in Travis-CI to test my Ansible roles on multiple OS.
This repo allows me to (automatically) build an Ubuntu 16.04 image from the provided Dockerfile
. This image contains the needed tools to run Ansible and the tests.
The image is built by Docker Hub automatically each time one of the following happens:
- the upstream OS container is updated;
- a commit is made on the
master
branch of this repo.
Simply tell Travis to pull the image from Docker Hub and run a container based on it.
Your .travis.yml
file should look like this:
sudo: required
language: bash
services:
- docker
before_install:
# Pull the image from Docker Hub:
- docker pull kblr/ubuntu16.04-ansible:latest
script:
# Run a container based on the previously pulled image:
- >
docker run
--name "${TRAVIS_COMMIT}.ubuntu16.04"
--detach
--privileged
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup,readonly
--mount type=bind,source="$(pwd)",target=/etc/ansible/roles/under_test,readonly
kblr/ubuntu16.04-ansible:latest
# Execute tests:
- >
docker exec "${TRAVIS_COMMIT}.ubuntu16.04"
ansible-playbook -v /etc/ansible/roles/under_test/tests/test/yml --syntax-check
- >
docker exec ...
after_script:
- docker rm -f "${TRAVIS_COMMIT}.ubuntu16.04"
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
If you ever need to build the image manually:
- Install Docker
git clone
this repocd
in the freshly cloned repo- Build the image using
docker build --no-cache --rm --tag="ubuntu16.04:ansible" .
cd
in your Ansible role directory- From there, run a container using
docker run --name [whatever] --detach --privileged --mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup,readonly --mount type=bind,source="$(pwd)",target=/etc/ansible/roles/under_test,readonly ubuntu16.04:ansible
Code reviews, patches, comments, bug reports and feature requests are welcome. Please read the Contributing Guide for further details.