This commit is contained in:
Geert Janssens 2017-09-10 18:32:58 +02:00
commit f0f53d99b7
9 changed files with 111 additions and 70 deletions

View File

@ -1,26 +1,20 @@
# Test # Test
sudo: required sudo: required
dist: trusty
branches:
except:
- trunk
language: c++ language: c++
compiler: compiler: gcc
- gcc
# - clang
env: env:
- BUILDTYPE=cmake-make - BUILDENV=arch BUILDTYPE=cmake-make
- BUILDTYPE=cmake-ninja - BUILDENV=arch BUILDTYPE=cmake-ninja
- BUILDTYPE=autotools - BUILDENV=arch BUILDTYPE=autotools
before_install: - BUILDENV=ubuntu-14.04 BUILDTYPE=cmake-make
# - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - BUILDENV=ubuntu-14.04 BUILDTYPE=cmake-ninja
- sudo apt-get update -qq - BUILDENV=ubuntu-14.04 BUILDTYPE=autotools
services:
- docker
install: install:
# - if [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.9; export CXX="g++-4.9" CC="gcc-4.9"; fi - docker --version
- sudo apt-get build-dep -qq gnucash - echo BUILDENV="$BUILDENV"
- sudo apt-get install -qq swig xsltproc libdbd-sqlite3 cmake3 texinfo ninja-build - docker build -f util/ci/${BUILDENV}-docker -t ${BUILDENV}-gnucashbuild util/ci
- sudo apt-get install -qq libboost-all-dev libgtk-3-dev libwebkit2gtk-3.0-dev script:
- sudo apt-get --reinstall install -qq language-pack-en language-pack-fr - echo BUILDTYPE="$BUILDTYPE"
- git clone https://github.com/google/googletest -b release-1.8.0 ~/gtest - docker run -v "$(pwd)":/gnucash:rw --env="BUILDTYPE=$BUILDTYPE" --rm ${BUILDENV}-gnucashbuild
script: ./util/travis-script.sh
after_failure: ./util/travis-after-failure.sh

23
util/ci/afterfailure Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
if [[ "$BUILDTYPE" == "cmake-make" ]] || [[ "$BUILDTYPE" == "cmake-ninja" ]]; then
echo "########################";
echo "##### LastTest.log #####";
echo "########################";
cat /build/Testing/Temporary/LastTest.log;
elif [[ "$BUILDTYPE" == "autotools" ]]; then
find . -name 'test*.log' -print0 |
while IFS= read -r -d '' logfile; do
SIZE=$((${#logfile} + 12));
HRULE=$(head -c "$SIZE" < /dev/zero | tr '\0' '#');
echo $HRULE;
echo "##### ${logfile} #####";
echo $HRULE;
cat -- "$logfile";
echo $'\n'$'\n';
done;
else
echo "Unknown BUILDTYPE: \"$BUILDTYPE\", cannot create failure information.";
fi
# This script should fail so that the entire script will fail.
exit 1;

11
util/ci/arch-docker Normal file
View File

@ -0,0 +1,11 @@
from base/archlinux
#run pacman -Syu --quiet --noconfirm > /dev/null
#run pacman -S --noconfirm archlinux-keyring
run pacman -Syu --quiet --noconfirm gcc cmake make autoconf automake boost python2 pkg-config guile2.0 guile git ninja gtest gmock sqlite3 webkit2gtk swig gwenhywfar aqbanking intltool libxslt postgresql-libs libmariadbclient libdbi libdbi-drivers > /dev/null
run echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
run echo en_GB.UTF-8 UTF-8 >> /etc/locale.gen
run echo fr_FR.UTF-8 UTF-8 >> /etc/locale.gen
run locale-gen
copy arch-testscript afterfailure commonbuild /
run chmod +x /arch-testscript /afterfailure /commonbuild
entrypoint /arch-testscript

18
util/ci/arch-testscript Normal file
View File

@ -0,0 +1,18 @@
#!/bin/bash -le
#-l above (login shell) so that /etc/profile runs so that perl is
# on the path.
#-e so that if any command has an exit code != 0, this script will
# exit immediately.
# Python is python 3, but gnucash doesn't work with python 3. There
# doesn't seem to be a way to tell automake to use /usr/bin/python2,
# so we'll mock this up
mkdir autotools_bin;
ln -s /usr/bin/python2 autotools_bin/python;
export PATH=/autotools_bin:"$PATH";
echo path is "$PATH";
echo python version is "$(python --version)";
../commonbuild

25
util/ci/commonbuild Normal file
View File

@ -0,0 +1,25 @@
#!/bin/bash -e
mkdir build;
cd build;
export TZ="America/Los_Angeles";
mkdir -p /root/.local/share;
if [[ "$BUILDTYPE" == "cmake-make" ]]; then
cmake ../gnucash
make -j 4;
make check || ../afterfailure;
elif [[ "$BUILDTYPE" == "cmake-ninja" ]]; then
cmake ../gnucash -DCMAKE_BUILD_TYPE=debug -DENABLE_DEBUG=on -G Ninja
ninja
ninja check || ../afterfailure;
elif [[ "$BUILDTYPE" == "autotools" ]]; then
../gnucash/autogen.sh;
../gnucash/configure --enable-python;
make;
make check || ../afterfailure;
else
echo "Unknown buildtype: \"$BUILDTYPE\". Not building.";
fi

View File

@ -0,0 +1,11 @@
from ubuntu:14.04
#sudo apt-get install -qq software-properties-common
#sudo add-apt-repository -qq ppa:george-edison55/cmake-3.x
run apt-get update -qq
run apt-get build-dep -qq gnucash > /dev/null
run apt-get install -qq git bash-completion cmake3 make swig xsltproc libdbd-sqlite3 texinfo ninja-build libboost-all-dev libgtk-3-dev libwebkit2gtk-3.0-dev > /dev/null
run apt-get --reinstall install -qq language-pack-en language-pack-fr
run git clone https://github.com/google/googletest -b release-1.8.0 gtest
copy ubuntu-14.04-testscript afterfailure commonbuild /
run chmod +x /ubuntu-14.04-testscript /afterfailure /commonbuild
entrypoint /ubuntu-14.04-testscript

View File

@ -0,0 +1,8 @@
#!/bin/bash -e
# -e above so that if any command has an exit code != 0, this script will
# exit immediately.
export GTEST_ROOT=/gtest/googletest GMOCK_ROOT=/gtest/googlemock;
../commonbuild

View File

@ -1,19 +0,0 @@
#! /bin/bash
# Build logs are located in different places depending on the build environment used
if [[ "$BUILDTYPE" == "cmake-make" ]] || [[ "$BUILDTYPE" == "cmake-ninja" ]]; then
echo "##### LastTest.log #####"
echo "#########################"
cat /tmp/gnucash-build-${BUILDTYPE}/Testing/Temporary/LastTest.log
elif [[ "$BUILDTYPE" == "autotools" ]]; then
for logfile in $( find . -name 'test*.log' ); do
SIZE=$((${#logfile} + 12))
HRULE=$(head -c $SIZE < /dev/zero | tr '\0' '#')
echo $HRULE
echo "##### ${logfile} #####"
echo $HRULE
cat -- "$logfile"
echo -e "\n\n"
done
fi

View File

@ -1,30 +0,0 @@
#! /bin/bash -ev
# The -e above says that if any line below fails, the whole script fails
# Run tests in different build configurations depending on the
# value of the BUILDTYPE environment variable
# 1. cmake build using the default Makefile generator
if [[ "$BUILDTYPE" == "cmake-make" ]]; then
mkdir /tmp/gnucash-build-cmake-make
cd /tmp/gnucash-build-cmake-make
GTEST_ROOT=~/gtest/googletest GMOCK_ROOT=~/gtest/googlemock cmake $TRAVIS_BUILD_DIR
make -j 4
TZ="America/Los_Angeles" make check
# 2. cmake build using the Ninja generator
elif [[ "$BUILDTYPE" == "cmake-ninja" ]]; then
mkdir /tmp/gnucash-build-cmake-ninja
cd /tmp/gnucash-build-cmake-ninja
GTEST_ROOT=~/gtest/googletest GMOCK_ROOT=~/gtest/googlemock cmake -G Ninja $TRAVIS_BUILD_DIR
ninja
TZ="America/Los_Angeles" ninja check
# 3. autotools build
elif [[ "$BUILDTYPE" == "autotools" ]]; then
cd $TRAVIS_BUILD_DIR
./autogen.sh
./configure --enable-python GTEST_ROOT=~/gtest/googletest GMOCK_ROOT=~/gtest/googlemock
make
TZ="America/Los_Angeles" make check
fi