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

claudioandre.br@gmail.com posted 1 patch 6 years, 10 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20170531170157.20317-1-claudioandre.br@gmail.com
.travis.yml        | 19 ++++++-------
tests/travis-ci.sh | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 89 insertions(+), 10 deletions(-)
create mode 100755 tests/travis-ci.sh
[libvirt] [PATCH V3] CI: also run tests using updated distro(s)
Posted by claudioandre.br@gmail.com 6 years, 10 months ago
From: Claudio André <claudioandre.br@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list