diff --git a/.travis.yml b/.travis.yml index b7fb89d..a1f76aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,25 @@ language: shell sudo: required +cache: + ccache: true + directories: + - $HOME/.ccache + env: matrix: - CHECK=format - CHECK=docs + - CHECK=build TYPE=debug COMPILER=g++ + - CHECK=build TYPE=release COMPILER=g++ + - CHECK=build TYPE=debug COMPILER=clang++ + - CHECK=build TYPE=release COMPILER=clang++ install: - - sudo resources/travis/setup.sh $CHECK + - sudo -E resources/travis/setup.sh script: - - sudo resources/travis/build.sh $CHECK + - sudo -E resources/travis/build.sh notifications: email: false diff --git a/resources/travis/build.sh b/resources/travis/build.sh index e32154c..7ed37e9 100755 --- a/resources/travis/build.sh +++ b/resources/travis/build.sh @@ -3,29 +3,32 @@ set -e . "$(dirname "$0")"/common.sh -for arg in "$@" +for arg in "$CHECK" do case "$arg" in format) ENABLE_FORMAT=true;; docs) ENABLE_DOCS=true;; + build) ENABLE_BUILD=true;; *) echo "Unknown command: $1" && exit 1 esac done alpine_run prepare <<-EOF - mkdir -p /tmp/build/format - mkdir -p /tmp/build/docs + mkdir ~/format + mkdir ~/docs + mkdir ~/app EOF if [ "$ENABLE_FORMAT" = true ]; then alpine_run format <<-EOF - cd /tmp/build/format + set -e + cd ~/format - cmake -Dtools.only=ON ~ + cmake -Dtools.only=ON ~/src make format - cd ~ + cd ~/src git add . git --no-pager diff --staged git diff-index --quiet HEAD @@ -35,10 +38,25 @@ fi if [ "$ENABLE_DOCS" = true ]; then alpine_run docs <<-EOF - cd /tmp/build/docs + set -e + cd ~/docs - cmake -Dtools.only=ON ~ + cmake -Dtools.only=ON ~/src make sdk make notes EOF fi + + +if [ "$ENABLE_BUILD" = true ]; then +alpine_run build <<-EOF + set -e + cd ~/app + + cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=$TYPE ~/src + cmake --build . + ctest --output-on-failure + src/AusweisApp2 -platform offscreen --help +EOF +fi + diff --git a/resources/travis/common.sh b/resources/travis/common.sh index f929f64..b883e87 100644 --- a/resources/travis/common.sh +++ b/resources/travis/common.sh @@ -1,5 +1,8 @@ readonly ALPINE_ROOT='/mnt/alpine' readonly ALPINE_USER='governikus' +readonly ALPINE_HOME="${ALPINE_ROOT}/home/${ALPINE_USER}" +readonly ALPINE_SRC="${ALPINE_HOME}/src" +readonly ALPINE_CCACHE="${ALPINE_HOME}/.ccache" alpine_run() { local folding="${1:-chroot}" diff --git a/resources/travis/setup.sh b/resources/travis/setup.sh index 7f8c6e2..a34f10f 100755 --- a/resources/travis/setup.sh +++ b/resources/travis/setup.sh @@ -5,8 +5,8 @@ set -eu readonly CLONE_DIR="${CLONE_DIR:-$(pwd)}" -MINIROOTFS_VERSION="3.8.0" -MINIROOTFS_SHA="ae36d6ea2033131cfc649afa13d7271367c386e7a0dbd5b3d0671a2ede22a2f1" +MINIROOTFS_VERSION="3.9.0" +MINIROOTFS_SHA="f82efed1a80c9af86c38bed10f3541c5588453b97684d767a5a3b0f3fa0e3f09" MINIROOTFS="alpine-minirootfs-${MINIROOTFS_VERSION}-x86_64.tar.gz" MINIROOTFS_URI="http://dl-cdn.alpinelinux.org/alpine/v${MINIROOTFS_VERSION%.*}/releases/x86_64/$MINIROOTFS" @@ -30,11 +30,12 @@ ln -sf /run/shm dev/shm PACKAGES="cmake make ninja git" -for arg in "$@" +for arg in "$CHECK" do case "$arg" in format) PACKAGES="$PACKAGES uncrustify";; docs) PACKAGES="$PACKAGES py2-sphinx py2-setuptools";; + build) PACKAGES="$PACKAGES clang g++ ccache binutils-gold eudev-dev pcsc-lite-dev http-parser-dev openssl-dev qt5-qtsvg-dev qt5-qtquickcontrols2-dev qt5-qtwebsockets-dev qt5-qtconnectivity-dev qt5-qtbase-dev qt5-qttools-dev";; *) echo "Unknown command: $1" && exit 1 esac done @@ -46,7 +47,11 @@ alpine_run packages root <<-EOF apk add $PACKAGES EOF -mount --bind "$CLONE_DIR" "${ALPINE_ROOT}/home/${ALPINE_USER}" +mkdir ${ALPINE_SRC} +mkdir ${ALPINE_CCACHE} +mount --bind "$CLONE_DIR" "${ALPINE_SRC}" +mount --bind "$HOME/.ccache" "${ALPINE_CCACHE}" +chmod 777 "$ALPINE_CCACHE" alpine_run chown root <<-EOF chown -R $ALPINE_USER: /home/${ALPINE_USER}