wasp/.travis.yml
2020-09-17 13:43:03 +02:00

66 lines
3.0 KiB
YAML

os:
- linux
- osx
# Do not choose a language; we provide our own build tools.
language: generic
# Caching so the next build will be fast too.
cache:
directories:
- $HOME/.ghc
- $HOME/.cabal
# Where GHC and Stackage packages (per specific resolver/snapshot) get installed.
# Caching this avoids stack downloading GHC and building all the packages each time.
- $HOME/.stack
# Where stack produces build artifacts while building our project.
# Caching this avoids stack having to re-build our whole project every time.
- $TRAVIS_BUILD_DIR/waspc/.stack-work
# Ensure necessary system libraries are present.
addons:
apt:
packages:
- libgmp-dev
before_install:
- mkdir -p ~/.local/bin && export PATH=$HOME/.local/bin:$PATH
# Download and install stack executable.
# NOTE: While it might seem redundant to do this on every build, it only takes about a second to download it.
- |
if [ "$TRAVIS_OS_NAME" = "osx" ]
then
travis_retry curl --insecure -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin
else
travis_retry curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
fi
- stack --numeric-version
install:
- cd $TRAVIS_BUILD_DIR/waspc
# Build dependencies.
# --no-terminal because Stack does some fancy stuff with Terminal which Travis does not support (is this still true?).
# --install-ghc just tells stack to install ghc if it is missing (normally we would do it manually with stack setup).
# --only-dependencies means only wasp dependencies will be built, no wasp source code will be built at this moment.
- stack --no-terminal --install-ghc test --only-dependencies
script:
# Build the wasp source code and its tests. Dependencies were already built before.
- stack --no-terminal test
after_success:
# Prepare releases to be deployed.
- mkdir travis-releases/
- mv "$(stack path --local-install-root)/bin/wasp" "travis-releases/wasp-${TRAVIS_OS_NAME}"
deploy:
provider: releases
api_key:
# Encrypted github access key. Generated with `travis setup --pro releases`.
secure: IkYVwfhHNnNncrsDk+bjv80f4tRIDwjmyYSKd3Ssiuxzz/NDGIDuWDUfIApt9skI6URaZInQhF7BPZ0llHUOHOnCsfw2c8ve/XcX9BOqsczCGI1XFrnuFiwst9aogNTupkVL4sAPz45MysENfgWEbqDWXlMgj0DgYG2qk7mpCMcY0MUkw6ZNuozjs8uM6ilVYdTKPut8cMQsJkfX+kzA3x5BfnuRNSyfs8W5DjjwZ+vVAKzdw0zL49GWBjfFfh+QRiekWqziEfFO6EyaD75VSGQKa5VUQQvmmy2CDKPayj94STBTZdmnPGK2QXwiSdJxaDS/vw2TwHyiHRZkvkRQ20kr9+tMpZjuE5mN2xiRBUt8jDjGJWCxzfL1JbBPdtShcrCofDvTwAFOT6ykd9dbfzAhEubAO6L/S0JIs0sRj/M18bXKh5VeDCabBOLfh5wGtOWy44sQ1FMW+vismA4MLYYMm5bSxjL+HWE7ijSbHOF0ew72L/cbHKXhALv48VNGVYj7wy/6MC7HXkgHyxGPUn5tx2a0oUBWkK62Asmba42i2KDed6ylChlivIijyoeg3dpYpcZjr4HfuC1e1O+NHIF8uke9yc7sNp3vdriD8HxvdmJQrbbwy3EIMSW9v5soePDTJywNEAcIwUCl6USE2fVShRuYcvhbkLYGoQMzh8U=
file: "travis-releases/wasp-${TRAVIS_OS_NAME}"
skip_cleanup: true
on:
# Whenever we push a tagged commit, binary will be deployed to releases.
tags: true