On Wed, May 31, 2017 at 12:21:05PM -0300, claudioandre.br(a)gmail.com wrote:
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.
---
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
Why is this labelled 'trusty' if we're running 17.04 which is not
'trusty'
Also just call the env var 'CC' rather than 'CCO' as that is
the more normal convention.
+ - services: docker
+ env: IMAGE=ubuntu:17.04 CCO=clang
+ dist: trusty
Again ?
+
+ allow_failures:
+ - env: IMAGE=ubuntu:17.04 CCO=gcc
+ - env: IMAGE=ubuntu:17.04 CCO=clang
Can you just fix the tests instead please.
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
+}
This isn't portable so we should at least check that we have the apt-get
binary, and print out a message about porting it to other distros...
+
+
+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
+}
I don't think we need separate functions for these two - just put
it all in one place.
In fact I think it is best to just run 'printenv' instead of
special casing the 'CC' env variable.
+
+
+# ----------- 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'
Per the comment, this is only needed for OS-X, so should be put inside the
the conditional for OS-X below
+
+# 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 $?
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|