# 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/ # - 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: # ignores command failures, completed commands are collapsed in log # 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 must succeed # 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