diff options
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000000..cdbe09bf92fb --- /dev/null +++ b/.travis.yml @@ -0,0 +1,84 @@ +language: nix +dist: trusty + +git: + depth: false + +matrix: + include: + - env: DO=check TYPE=Debug TOOLCHAIN=llvm-5 SANITIZE=true + - env: DO=check TYPE=Release TOOLCHAIN=llvm-5 BENCHMARKS=true + - env: DO=check TYPE=Debug TOOLCHAIN=gnu-6 COVERAGE=true + - env: DO=check TYPE=Release TOOLCHAIN=gnu-6 BENCHMARKS=true + - env: DO=check TYPE=Debug TOOLCHAIN=gnu-7 STD=17 + - env: DO=check TYPE=Debug TOOLCHAIN=llvm-9 STD=17 FUZZERS=true + - env: DO=build + - env: DO=docs + +before_install: + - | + : ${TOOLCHAIN:=gnu-6} + : ${TYPE:=Debug} + : ${STD:=14} + function build-p { [[ "${DO}" == build ]]; } + function check-p { [[ "${DO}" == check ]]; } + function docs-p { [[ "${DO}" == docs ]]; } + function coverage-p { [[ "${COVERAGE}" == true ]]; } + function benchmarks-p { [[ "${BENCHMARKS}" == true ]]; } + function deploy-p { + [[ "${TRAVIS_PULL_REQUEST}" == "false" && \ + "${TRAVIS_BRANCH}" == "master" ]] + } + function upload-p { + [[ -n "$encrypted_1c8d51d72e41_key" && \ + -n "$encrypted_1c8d51d72e41_iv" ]] + } + function decrypt-ssh-key { + openssl aes-256-cbc \ + -K $encrypted_1c8d51d72e41_key \ + -iv $encrypted_1c8d51d72e41_iv \ + -in tools/travis/ssh-key.enc \ + -out tools/travis/ssh-key -d + chmod 600 tools/travis/ssh-key + } + function with-nix { + nix-shell --argstr toolchain $TOOLCHAIN --run "set -e; $1" + } + +install: + - with-nix "echo == nix environment ok" + +before_script: + - | + with-nix " + mkdir build && cd build + cmake .. \ + -DCMAKE_BUILD_TYPE=${TYPE} \ + -DCHECK_SLOW_TESTS=false \ + -DCXX_STANDARD=${STD} \ + -DCHECK_BENCHMARKS=${BENCHMARKS} \ + -DENABLE_COVERAGE=${COVERAGE} \ + -DENABLE_SANITIZE=${SANITIZE} \ + -DCHECK_FUZZERS=${FUZZERS} \ + -DDISABLE_FREE_LIST=${SANITIZE} + " + +script: + - | + set -e + ! build-p || nix-build + ! check-p || with-nix "cd build && make -j2 check" + ! docs-p || with-nix "cd build && make docs" + +after_success: + - | + ! coverage-p || with-nix " + cd build + find . -name \"*.gcno\" | xargs gcov -bcprs ${PWD} + bash <(curl -s https://codecov.io/bash) -x gcov + " + if upload-p; then + decrypt-ssh-key + ! benchmarks-p || with-nix "cd build && make upload-benchmark-reports" + ! docs-p || ! deploy-p || with-nix "cd build && make upload-docs" + fi |