hledger/.travis.yml
2017-03-28 18:44:34 -07:00

159 lines
5.6 KiB
YAML

# https://docs.travis-ci.com/user/customizing-the-build
# https://docs.travis-ci.com/user/caching/
# https://docs.travis-ci.com/user/languages/haskell/
# http://docs.haskellstack.org/en/stable/travis_ci.html
# https://raw.githubusercontent.com/commercialhaskell/stack/master/doc/travis-simple.yml
# https://raw.githubusercontent.com/commercialhaskell/stack/master/doc/travis-complex.yml
# https://github.com/hvr/multi-ghc-travis#user-content-travisyml-template-for-non-container-based-infrastructure
#
# The Build Lifecycle #
# A build on Travis CI is made up of two steps:
# install: install any dependencies required
# script: run the build script
# You can run custom commands before the installation step (before_install), and before (before_script) or after (after_script) the script step.
# In a before_install step, you can install additional dependencies required by your project such as Ubuntu packages or custom services.
# You can perform additional steps when your build succeeds or fails using the after_success (such as building documentation, or deploying to a custom server) or after_failure (such as uploading log files) options. In both after_failure and after_success, you can access the build result using the $TRAVIS_TEST_RESULT environment variable.
# The complete build lifecycle, including three optional deployment steps and after checking out the git repository and changing to the repository directory, is:
#
# OPTIONAL Install apt addons
# OPTIONAL Install cache components
# before_install
# install
# before_script
# script
# OPTIONAL before_cache (for cleaning up cache)
# Travis CI uploads the cache after the script phase of the build, but before either after_success or after_failure.
# Failure to upload the cache does not mark the job as failed.
# after_success or after_failure
# OPTIONAL before_deploy
# OPTIONAL deploy
# OPTIONAL after_deploy
# after_script
sudo: false
dist: trusty
language: generic
cache:
timeout: 1000
directories:
- $HOME/.stack/
- $HOME/.local/bin/
- .stack-work/
# - shelltestrunner/
# addons:
# apt:
# packages:
# - libgmp-dev
branches:
only:
- master
- travis
# matrix:
# include:
# - env: ARGS=""
# - env: ARGS="--stack-yaml stack-7.10.yaml"
# - ghc: 7.10.3
# - ghc: 8.0.2
install: # completed commands' output is collapsed in log
# if any command fails, end the travis run
- set -e
# stack
- mkdir -p ~/.local/bin
- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
- chmod a+x ~/.local/bin/stack
- export PATH=~/.local/bin:$PATH
- stack --version
# GHC
- stack setup
- stack exec -- ghc --version
# hledger dependencies
- stack build --only-dependencies --test #hledger-lib hledger hledger-ui #hledger-web hledger-api
# TODO: does this build some hledger packages, which get rebuilt later with -Werror ?
# hledger addon dependencies
- stack build Chart Chart-diagrams colour Diff here
# shelltestrunner, need unreleased installable version
#- if [ ! -d shelltestrunner ]; then git clone http://github.com/simonmichael/shelltestrunner; fi
- git clone http://github.com/simonmichael/shelltestrunner
- stack install --stack-yaml=shelltestrunner/stack.yaml --resolver=lts-8.2 --install-ghc
- shelltest --version
script: # all commands' output is shown in log, all commands must succeed for travis success
# build hledger packages, ensuring no warnings, no haddock failures, package test suites passing
- stack build --ghc-options=-Werror --test --haddock --no-haddock-deps #hledger-lib hledger hledger-ui #hledger-web hledger-api
# build hledger addons, ensuring no warnings
- sh -e bin/compile.sh
# run functional tests
- make functest
after_script:
# list directory contents
- pwd
- ls -laF /
- ls -laF /home
- ls -laF $HOME
- ls -laF $HOME/build
- ls -laF $HOME/build/simonmichael
- ls -laF
# coveralls.io coverage reports
# - stack install hpc-coveralls
# - hpc-coveralls count-von-count-tests --exclude-dir=tests --exclude-dir=src/Gyrid --display-report
notifications:
irc:
channels:
- "chat.freenode.net#hledger"
on_success: change # [always|never|change] default: always
on_failure: change # default: always
use_notice: true
skip_join: true
# If you enable skip_join, remember to remove the NO_EXTERNAL_MSGS flag (n) on the IRC channel(s) the bot notifies.
template:
- "%{commit}: %{message} %{build_url}"
# - "%{repository_name} (%{commit}) : %{message} %{build_url}"
# You can interpolate the following variables:
# repository_slug: your GitHub repo identifier (like svenfuchs/minimal)
# repository_name: the slug without the username
# repository: same as repository_slug [Deprecated]
# build_number: build number
# build_id: build id
# branch: branch build name
# commit: shortened commit SHA
# author: commit author name
# commit_message: commit message of build
# commit_subject: first line of the commit message
# result: result of build
# message: travis message to the build
# duration: duration of the build
# compare_url: commit change view URL
# build_url: URL of the build detail
# The default template is:
# - "%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}"
# - "Change view : %{compare_url}"
# - "Build details : %{build_url}"
# email: # false
# recipients:
# - one@example.com
# - other@example.com
# on_success: [always|never|change] # default: change
# on_failure: [always|never|change] # default: always