From ca0e482820af06ca6b69e031d538cbfb4e8b6dbe Mon Sep 17 00:00:00 2001 From: Kenneth Shaw <kenneth.shaw@knq.io> Date: Sun, 26 Jun 2016 14:16:11 +0700 Subject: [PATCH] Initial travis-ci and coveralls Integration (#121) Contains the initial scripts and configuration for travis-ci and coveralls integration. Fixes #96 --- .gitignore | 3 +++ .travis.yml | 33 ++++++++++++++++++++++++++++++++ contrib/README.md | 4 ++++ contrib/build-rocksdb.sh | 38 +++++++++++++++++++++++++++++++++++++ contrib/cover.sh | 41 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 .travis.yml create mode 100644 contrib/README.md create mode 100755 contrib/build-rocksdb.sh create mode 100755 contrib/cover.sh diff --git a/.gitignore b/.gitignore index e69de29b..97a21092 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +/build +/installs +/coverage.out diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..f50abfab --- /dev/null +++ b/.travis.yml @@ -0,0 +1,33 @@ +language: go +go: + - 1.6 +# - tip # broken for 1.7 +sudo: false +#notifications: +# slack: +# secure: <INSERT ENCRYPTED SLACK KEY HERE> +addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + packages: + - clang-3.8 + - libbz2-dev + - libsnappy-dev + - zlib1g-dev +env: + - CC=clang-3.8 CXX=clang++-3.8 +cache: + apt: true + directories: + - $HOME/build +install: + - bash contrib/build-rocksdb.sh $HOME/build +before_script: + - go get github.com/mattn/goveralls + - go get github.com/kardianos/govendor +script: + - govendor sync + - bash contrib/cover.sh $HOME/build coverage.out + - goveralls -service=travis-ci -coverprofile=coverage.out diff --git a/contrib/README.md b/contrib/README.md new file mode 100644 index 00000000..a7535790 --- /dev/null +++ b/contrib/README.md @@ -0,0 +1,4 @@ +The `contrib` directory contains scripts, images, and other helpful things +which are not part of the core dgraph distribution. Please note that they +could be out of date, since they do not receive the same attention as the +rest of the repository. diff --git a/contrib/build-rocksdb.sh b/contrib/build-rocksdb.sh new file mode 100755 index 00000000..f24ba482 --- /dev/null +++ b/contrib/build-rocksdb.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +ROCKSDBVER="4.2" +ROCKSDBURL="https://github.com/facebook/rocksdb/archive/v${ROCKSDBVER}.tar.gz" +ROCKSDBFILE="rocksdb-${ROCKSDBVER}.tar.gz" +ROCKSDBDIR=rocksdb-${ROCKSDBVER} +ROCKSDBLIB=librocksdb.so.${ROCKSDBVER} + +SRC="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/.." + +BUILD=$1 +if [ -z "$1" ]; then + BUILD=$SRC/build +fi + +[ -d $BUILD ] || mkdir -p $BUILD + +set -e + +pushd $BUILD &> /dev/null + +# download +if [ ! -f $ROCKSDBFILE ]; then + wget -O $ROCKSDBFILE $ROCKSDBURL +fi + +# extract +if [ ! -d $ROCKSDBDIR ]; then + tar -zxf $ROCKSDBFILE +fi + +# configure, build +if [ ! -e $ROCKSDBDIR/${ROCKSDBLIB} ]; then + cd $ROCKSDBDIR + make shared_lib +fi + +popd &> /dev/null diff --git a/contrib/cover.sh b/contrib/cover.sh new file mode 100755 index 00000000..8254b824 --- /dev/null +++ b/contrib/cover.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +SRC="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/.." +TMP=$(mktemp -p /tmp dgraph-coverage-XXXXX.txt) + +BUILD=$1 +if [ -z "$1" ]; then + BUILD=$SRC/build +fi + +OUT=$2 +if [ -z "$OUT" ]; then + OUT=$SRC/coverage.out +fi +rm -f $OUT + +ROCKSDBDIR=$BUILD/rocksdb-4.2 + +set -e + +pushd $SRC &> /dev/null + +# build flags needed for rocksdb +export CGO_CFLAGS="-I${ROCKSDBDIR}/include" +export CGO_LDFLAGS="-L${ROCKSDBDIR}" +export LD_LIBRARY_PATH="${ROCKSDBDIR}:${LD_LIBRARY_PATH}" + +# create coverage output +echo 'mode: atomic' > $OUT +for PKG in $(go list ./...|grep -v '/vendor/'); do + echo "TESTING: $PKG" + go test -v -covermode=atomic -coverprofile=$TMP $PKG + tail -n +2 $TMP >> $OUT +done + +# open in browser if not in a build environment +if [ ! -z "$DISPLAY" ]; then + go tool cover -html=$OUT +fi + +popd &> /dev/null -- GitLab