streamly/.travis.yml
2018-03-09 02:05:29 +05:30

164 lines
7.1 KiB
YAML

# See https://github.com/harendra-kumar/packcheck for all options and their
# explanation.
env:
global:
# ------------------------------------------------------------------------
# Global options used for all CI tests
# ------------------------------------------------------------------------
- GHC_OPTIONS="-Werror"
# ------------------------------------------------------------------------
# Options for builds that need stack
# ------------------------------------------------------------------------
#- STACKVER="1.6.5"
- STACK_UPGRADE="y"
# ------------------------------------------------------------------------
# Other options: Normally you would not need to customize these
# ------------------------------------------------------------------------
- CABAL_REINIT_CONFIG=y
- CABAL_CHECK_RELAX=y
- CABAL_NO_SANDBOX=y
- CABAL_HACKAGE_MIRROR=hackage.haskell.org:http://hackage.fpcomplete.com
- TEST_INSTALL=y
- PATH=/bin:/usr/bin
- LC_ALL=C.UTF-8
# ------------------------------------------------------------------------
# Location of packcheck.sh (the shell script invoked to perform CI tests ).
# ------------------------------------------------------------------------
# You can either commit the packcheck.sh script at this path in your repo or
# you can use it by specifying the PACKCHECK_REPO_URL option below in which
# case it will be automatically copied from the packcheck repo to this path
# during CI tests. In any case it is finally invoked from this path.
- PACKCHECK_LOCAL_PATH="./packcheck.sh"
# If you have not committed packcheck.sh in your repo at PACKCHECK_LOCAL_PATH
# then it is automatically pulled from this URL.
- PACKCHECK_GITHUB_URL="https://raw.githubusercontent.com/harendra-kumar/packcheck"
- PACKCHECK_GITHUB_COMMIT="da9d6da3d18d6250c06617817f0879324c75c224"
notifications:
email: false
# This matrix has total 11 builds enabled, 4 builds each (3 last major compiler
# versions and head) for stack and cabal, 2 OSX builds (stack and cabal for
# latest compiler version), and one hlint build. You may want to comment out
# some of the builds to be lighter on the CI infrastructure.
#
# We pre-install the cabal-install package to not incur the penalty of building
# it the first time in cached builds or every time in uncached builds.
matrix:
include:
# --------------------------------------------------------------------------
# (Linux) stack builds
# --------------------------------------------------------------------------
- env: BUILD=stack CABALVER=1.22 GHCVER=7.10.3 RESOLVER=lts-6 STACK_YAML=stack-7.10.yaml STACK_BUILD_OPTIONS="--flag streamly:examples-sdl"
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,libsdl1.2-dev], sources: [hvr-ghc]}}
- env: BUILD=stack CABALVER=1.24 GHCVER=8.0.2 RESOLVER=lts-9 STACK_YAML=stack-8.0.yaml STACK_BUILD_OPTIONS="--flag streamly:examples-sdl"
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,libsdl1.2-dev], sources: [hvr-ghc]}}
- env: BUILD=stack CABALVER=2.0 GHCVER=8.2.2 RESOLVER=lts-10 STACK_BUILD_OPTIONS="--flag streamly:examples-sdl"
addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,libsdl1.2-dev], sources: [hvr-ghc]}}
# Nightly
- env: BUILD=stack RESOLVER=nightly
# Using a custom stack-yaml config file.
#- env: BUILD=stack STACK_YAML=.ci/stack-8.0.yaml
# You can customize a stack build even without a custom stack-yaml
# using STACK_OPTIONS, STACK_BUILD_OPTIONS, GHC_OPTIONS etc.
#- env: BUILD=stack RESOLVER=lts-10.0 STACK_BUILD_OPTIONS="--flag packcheck:dev"
# --------------------------------------------------------------------------
# (Linux) cabal builds require pre-installed cabal-install and ghc
# --------------------------------------------------------------------------
#- env: BUILD=cabal CABALVER=1.22 GHCVER=7.10.3
# addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}
- env: BUILD=cabal CABALVER=1.24 GHCVER=8.0.2
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}}
#- env: BUILD=cabal CABALVER=2.0 GHCVER=8.2.2
# addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}}
- env: BUILD=cabal CABALVER=head GHCVER=head
addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
# --------------------------------------------------------------------------
# OS X builds
# --------------------------------------------------------------------------
# GHC 8.2.2/cabal build via stack
#- env: BUILD=cabal RESOLVER=lts-10
# os: osx
# GHC 8.2.2/stack
- env: BUILD=stack RESOLVER=lts-10
os: osx
# --------------------------------------------------------------------------
# Lint
# --------------------------------------------------------------------------
- env: BUILD=stack RESOLVER=lts-10 HLINT_COMMANDS="hlint lint ."
# --------------------------------------------------------------------------
# Build and send coverage report to coveralls.io using hpc-coveralls
# --------------------------------------------------------------------------
# Note COVERALLS (hpc-coveralls) works only with cabal build.
# For this to succeed you have to add your project to coveralls.io first
- env: BUILD=cabal CABALVER=2.0 GHCVER=8.2.2 COVERALLS_OPTIONS="--coverage-mode=StrictlyFullLines --exclude-dir=test test"
addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}}
# --------------------------------------------------------------------------
# Builds that are allowed to fail
# --------------------------------------------------------------------------
allow_failures:
- env: BUILD=stack RESOLVER=nightly
- env: BUILD=cabal CABALVER=head GHCVER=head
- env: BUILD=stack RESOLVER=lts-10 HLINT_COMMANDS="hlint lint ."
# ------------------------------------------------------------------------
# Settings beyond this point are advanced and normally not tweaked
# ------------------------------------------------------------------------
language: generic
sudo: false
cache:
directories:
- $HOME/.cabal
- $HOME/.ghc
- $HOME/.local
- $HOME/.stack
install: true
script:
- |
# When GHCVER or CABALVER env variables are specified, modify the path to
# find the binaries installed from hvr-ghc repo
add_path() { eval "test -n \"\$$1\"" && eval "PATH=/opt/$2/\"\$$1\"/bin:$PATH"; true; }
# Emit the value of the var specified as arg only when the build is cabal
cabal_env() { test "$BUILD" = cabal && echo $1; }
# If a custom stack-yaml is specified, replace the default with that
if test -e "$STACK_YAML"; then rm -f stack.yaml && ln -sv $STACK_YAML stack.yaml; else true; fi
unset STACK_YAML
# Get packcheck if needed
CURL=$(which curl)
PACKCHECK_URL=${PACKCHECK_GITHUB_URL}/${PACKCHECK_GITHUB_COMMIT}/packcheck.sh
if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi;
chmod +x $PACKCHECK_LOCAL_PATH
add_path GHCVER ghc
add_path CABALVER cabal
# In addition to PACKCHECK envvars hpc-coveralls needs TRAVIS,
# TRAVIS_JOB_ID variables set by the travis CI environment.
- bash -c "$PACKCHECK_LOCAL_PATH $BUILD"