From: Claudio André <claudioandre.br(a)gmail.com>
It is possible to test libvirt using other distros in Travis via Docker;
including (but not limited to) Fedora and Ubuntu.
---
https://travis-ci.org/claudioandre/libvirt/builds/237995646
.travis.yml | 19 ++++++-------
tests/travis-ci.sh | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 89 insertions(+), 10 deletions(-)
create mode 100755 tests/travis-ci.sh
diff --git a/.travis.yml b/.travis.yml
index 5a3e765..e4d4888 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,6 @@
sudo: false
language: c
dist: precise
-compiler:
- - gcc
cache: ccache
addons:
apt:
@@ -62,15 +60,14 @@ git:
before_install:
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update &&
brew install gnutls libgcrypt yajl gettext rpcgen ; fi
-# the custom PATH is just to pick up OS-X homebrew & its harmless on Linux
-before_script:
- - PATH="/usr/local/opt/gettext/bin:/usr/local/opt/rpcgen/bin:$PATH"
./autogen.sh
script:
- - VIR_TEST_DEBUG=1 make -j3 && make -j3 syntax-check && make -j3 check
+ - tests/travis-ci.sh
# Environments here are run in addition to the main environment defined above
matrix:
include:
+ - compiler: gcc
+ dist: precise
- compiler: clang
dist: precise
- compiler: clang
@@ -79,10 +76,12 @@ matrix:
dist: trusty
- compiler: clang
os: osx
- script:
- # many unit tests fail & so does syntax-check, so skip for now
- # one day we must fix it though....
- - make -j3
+ - services: docker
+ env: IMAGE=ubuntu:17.04 CC=gcc
+ dist: trusty
+ - services: docker
+ env: IMAGE=ubuntu:17.04 CC=clang
+ dist: trusty
after_failure:
- echo
'============================================================================'
diff --git a/tests/travis-ci.sh b/tests/travis-ci.sh
new file mode 100755
index 0000000..e63d509
--- /dev/null
+++ b/tests/travis-ci.sh
@@ -0,0 +1,80 @@
+#!/bin/bash -e
+
+function do_Install_Dependencies(){
+ echo
+ echo '-- Installing Dependencies --'
+
+ if [[ $DISTRO = "ubuntu:17.04" ]]; then
+ apt-get update -qq
+ apt-get -y -qq install \
+ build-essential git clang autoconf libtool libcmpicppimpl0 gettext \
+ xsltproc autopoint libxml2-dev libncurses5-dev libreadline-dev \
+ zlib1g-dev libgnutls28-dev libgcrypt11-dev libavahi-client-dev libsasl2-dev
\
+ libxen-dev lvm2 libgcrypt11-dev libparted0-dev libdevmapper-dev uuid-dev \
+ libudev-dev libpciaccess-dev libcap-ng-dev libnl-3-dev libnl-route-3-dev \
+ libyajl-dev libpcap0.8-dev libnuma-dev libnetcf-dev libaudit-dev \
+ libxml2-utils libapparmor-dev dnsmasq-base librbd-dev w3c-markup-validator
kmod > /dev/null
+ else
+ echo "Please, change 'tests/travis-ci.sh' to add the needed
dependencies for $DISTRO."
+ exit 1
+ fi
+}
+
+
+function do_Show_Info(){
+ echo
+ echo '-- Environment --'
+ echo "Running on Docker: $DISTRO"
+ id
+ uname -a
+
+ if [[ -n $CC ]]; then
+ echo
+ echo '-- Compiler in use --'
+ "$CC" --version
+ fi
+
+ echo -en 'travis_fold:start:printenv\r'
+ echo '-- Environment Variables --'
+ printenv
+ echo -en 'travis_fold:end:printenv\r'
+}
+
+
+# ----------- Build and Test libvirt -----------
+
+if [[ -n $IMAGE ]]; then
+ # Run docker using the selected image; then build and test
+ docker run --privileged --cap-add=ALL -v /lib/modules:/lib/modules \
+ -v "$(pwd)":/cwd -e CC=$CC -e DISTRO=$IMAGE "$IMAGE" sh -e -c
" \
+ cd /cwd; \
+ tests/travis-ci.sh"
+ exit $?
+fi
+
+if [[ -n $DISTRO ]]; then
+ do_Install_Dependencies
+ do_Show_Info
+fi
+
+# Build and test
+if [[ "$TRAVIS_OS_NAME" = "osx" ]]; then
+ echo -en 'travis_fold:start:autogen\r'
+ echo '-- Running ./autogen.sh --'
+ # The custom PATH is just to pick up OS-X homebrew
+ PATH="/usr/local/opt/gettext/bin:/usr/local/opt/rpcgen/bin:$PATH"
./autogen.sh
+ echo -en 'travis_fold:end:autogen\r'
+
+ # many unit tests fail & so does syntax-check, so skip for now
+ # one day we must fix it though....
+ make -j3
+else
+ echo -en 'travis_fold:start:autogen\r'
+ echo '-- Running ./autogen.sh --'
+ ./autogen.sh
+ echo -en 'travis_fold:end:autogen\r'
+
+ VIR_TEST_DEBUG=1 make -j3 && make -j3 syntax-check && make -j3 check
+fi
+
+exit $?
--
2.11.0