[libvirt] [PATCH V2] CI: also run tests using updated distro(s)

claudioandre.br at gmail.com claudioandre.br at gmail.com
Wed May 31 15:21:05 UTC 2017


From: Claudio André <claudioandre.br at gmail.com>

It is possible to test libvirt using other distros in Travis via Docker;
including (but not limited to) Fedora and Ubuntu.
---
See it in action at https://travis-ci.org/claudioandre/libvirt/builds/237687907 

 .travis.yml        | 23 ++++++++++--------
 tests/travis-ci.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+), 10 deletions(-)
 create mode 100755 tests/travis-ci.sh

diff --git a/.travis.yml b/.travis.yml
index 5a3e765..3ed2093 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,16 @@ 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 CCO=gcc
+      dist: trusty
+    - services: docker
+      env: IMAGE=ubuntu:17.04 CCO=clang
+      dist: trusty
+
+  allow_failures:
+    - env: IMAGE=ubuntu:17.04 CCO=gcc
+    - env: IMAGE=ubuntu:17.04 CCO=clang
 
 after_failure:
   - echo '============================================================================'
diff --git a/tests/travis-ci.sh b/tests/travis-ci.sh
new file mode 100755
index 0000000..07ec85d
--- /dev/null
+++ b/tests/travis-ci.sh
@@ -0,0 +1,70 @@
+#!/bin/bash -e
+
+function do_Install_Dependencies(){
+    echo
+    echo '-- Installing Dependencies --'
+
+    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
+}
+
+
+function do_Show_Info(){
+    echo
+    echo '-- Environment --'
+    echo "Running on Docker: $DISTRO"
+    id
+    uname -a
+}
+
+
+function do_Show_Compiler(){
+
+    if [[ -n $CC ]]; then
+        echo
+        echo '-- Compiler in use --'
+        "$CC" --version
+    fi
+}
+
+
+# ----------- 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=$CCO -e DISTRO=$IMAGE "$IMAGE" sh -e -c " \
+        cd /cwd; \
+        tests/travis-ci.sh"
+    exit $?
+fi
+
+if [[ -n $DISTRO ]]; then
+    do_Show_Info
+    do_Install_Dependencies
+    do_Show_Compiler
+fi
+
+echo -en 'travis_fold:start:autogen\r'
+    echo '-- Running ./autogen.sh --'
+    # The custom PATH is just to pick up OS-X homebrew & its harmless on Linux
+    PATH="/usr/local/opt/gettext/bin:/usr/local/opt/rpcgen/bin:$PATH" ./autogen.sh
+echo -en 'travis_fold:end:autogen\r'
+
+# Build and test
+if [[ "$TRAVIS_OS_NAME" = "osx" ]]; then
+    # many unit tests fail & so does syntax-check, so skip for now
+    # one day we must fix it though....
+    make -j3
+else
+    VIR_TEST_DEBUG=1 make -j3 && make -j3 syntax-check && make -j3 check
+fi
+
+exit $?
-- 
2.11.0




More information about the libvir-list mailing list