sudo: true dist: xenial language: generic addons: chrome: stable services: - xvfb before_install: - # start your web application and listen on `localhost` - google-chrome-stable --headless --disable-gpu --remote-debugging-port=5000 http://localhost & cache: directories: - $HOME/.stack - .stack-work - back/.stack-work - back/static/js # Needed so that bundle.js would persist to the # "Push Docker image" stage and beyond - without it # the backend doesn't work and the tests don't run. timeout: 1000 jobs: include: - stage: "Build the frontend and upload a Docker image" script: # Build - cd front - npm install - npm run build - cd - # Upload the Docker image - | if [ "$TRAVIS_EVENT_TYPE" = "push" ]; then export BRANCH="$(echo "$TRAVIS_BRANCH" | tr '/' '-')" make front/travis-docker "tag=$BRANCH--front" docker login quay.io -u "$DOCKER_USER" -p "$DOCKER_PASS" docker push "quay.io/aelve/guide:$BRANCH--front" fi - stage: "Build the backend and upload a Docker image" before_script: - sudo apt-get install -y libgmp-dev - curl -sSL https://get.haskellstack.org/ | sh # travis_retry works around https://github.com/commercialhaskell/stack/issues/4888 - travis_retry stack setup script: # Build - stack --no-terminal build --test --no-run-tests --dependencies-only - stack --no-terminal build --test --no-run-tests # Upload the Docker image - | if [ "$TRAVIS_EVENT_TYPE" = "push" ]; then export BRANCH="$(echo "$TRAVIS_BRANCH" | tr '/' '-')" make back/travis-docker "tag=$BRANCH--back" docker login quay.io -u "$DOCKER_USER" -p "$DOCKER_PASS" docker push "quay.io/aelve/guide:$BRANCH--back" fi # Check that no new undocumented definitions are introduced. Our # goal is full documented code with ZERO undocumented definitions. # This check warns if a commit increases the amount of undocumented # definitions (currently 251). # # First we unregister the package so that Haddocks would be rebuilt # from scratch, then we build haddocks and count the lines for # "missing documentation". - stack --no-terminal exec -- ghc-pkg unregister guide - stack --no-terminal build --test --no-run-tests --haddock --no-haddock-deps --haddock-arguments='--no-warnings' 2> haddock.log - awk '/\(src\//' haddock.log | awk 'END { print NR }' > undocumented - awk '{ print "undocumented == " $1 }' undocumented - | if [[ `cat undocumented` -gt 251 ]]; then >&2 echo "FAIL: found $(cat undocumented) top-level undocumented definitions. The current limit is 251. Please, add Haddock comments to undocumented definitions!" exit 1 fi before_cache: - rm -rf $HOME/.stack/programs # GHC is faster to install than to cache - stage: "Test the backend" before_script: - sudo apt-get install -y libgmp-dev fluxbox - curl -sSL https://get.haskellstack.org/ | sh # travis_retry works around https://github.com/commercialhaskell/stack/issues/4888 - travis_retry stack setup # Install chromedriver - wget https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.zip - unzip chromedriver_linux64.zip - chmod +x chromedriver - sudo mv -f chromedriver /usr/local/share/chromedriver - sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver - sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver # Run selenium-server - travis_retry wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar -O selenium.jar - java -jar selenium.jar 2> /dev/null & - sleep 15 script: - stack --no-terminal test - make back/test-db before_cache: - rm -rf $HOME/.stack/programs # GHC is faster to install than to cache # - stage: "Test the frontend" # - sleep 10 # - fluxbox >/dev/null 2>&1 & # script: # # Run testcafe e2e testing # - npm run test notifications: slack: secure: BgQpUYFmvXrf7HVBP/fefS/8UVwES800+fT+ufgJX8b2HMx2FvaWVsdv3ErKAryLE0B3fwmvforWugTdgLO3kq66YUgSt51SNQOBLkMVGubIoQsgvr3Ernu+Wpw1DyoMkXQH9q9O9rfCIc4IwkQCEHqu5SVRqdOd5px/CHFl/ktTI22JkT8ap/Be53qjlB2U2sWUf4GxYXq0V/gGF6fDwsUwTVKFb14RfSDrOgK5Vlce2GRf3gNr1C/j7A7EHIR/Z+rNd2hvv69cFw6TRc3s39QmP8XPe3SLZPIHTZ8vRveX1SZioMeEy747r5rHd9vylEjxWtVHhvP9fOt693+woXa8ZAl5uVRgB6S4mTWLZ+LAbqhaCmDGJYr9GrrBMoqWvJiMuBX3ZvHptsAc6O2l/fxZQU3otTE++SmHkhbyoDQkcPCjXPDUi/ZlnoLc5zfMAfApcsZZ8b9t47z12H0O4uDZd2YiNPiQJ1iUA6R879LH3pcxPB3RaoWsfXzv/klkKrU/V2K4SXD9j4/bmAFArlig+dar+Dm44L/a3/G7vbU1lQIa1bG0EqB36qgUS3UCkuy2ppti/JTHpkYx7HVF2BipoCjOVvfBl9G8RkvcQIhyuCfOGm7WL1TjrKVMccIEGJKhm7OO6wOZYCBfAI5zILxi8XEJAIvBm9NywhQlwxI=