.travis.yml | 23 ++++++++++-------- tests/travis-ci.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 10 deletions(-) create mode 100755 tests/travis-ci.sh
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.
---
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
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, May 31, 2017 at 12:21:05PM -0300, claudioandre.br@gmail.com wrote: > 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. > --- > 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 :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Em 31/05/2017 12:38, Daniel P. Berrange escreveu: > On Wed, May 31, 2017 at 12:21:05PM -0300, claudioandre.br@gmail.com wrote: >> 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. >> --- >> 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' Two different things. Trusty is the Travis worker (the "base OS") and 17.04 is the docker image. > Also just call the env var 'CC' rather than 'CCO' as that is > the more normal convention. Ok, I did this to avoid to use the CC that already exists in the worker (base OS). Will change and test. >> + allow_failures: >> + - env: IMAGE=ubuntu:17.04 CCO=gcc >> + - env: IMAGE=ubuntu:17.04 CCO=clang > Can you just fix the tests instead please. They are fixed/passing. I will remove the allow failures. > >> 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... Not sure I get the point. - Ok, it is not portable between Ubuntu versions (e.g., libgnutls-dev x libgnutls28-dev) - I can do something like this: if [ ubuntu 17.04 ] ok else echo "please provide the installation of the needed dependencies" exit 1 fi >> + >> +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. Ok, I can add the printenv, but notice I need to print the version of the compiler used. So, I'll keep the 'CC' env stuff. Ok, I can merge the two functions. But, please, notice that I have 2 because I was thinking about debugging: - as soon as possible, show info about the docker running environment. Docker run is ok?; - install dependencies. Installation was ok?; - then, show info about the compiler version (e.g., to help you in case of compiler warnings). > + >> + >> +# ----------- 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 Ok. Claudio -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2024 Red Hat, Inc.