mirror of
https://github.com/aelve/guide.git
synced 2024-12-23 04:42:24 +03:00
f3050638f7
* Use travis_retry with stack setup * Comment
115 lines
5.0 KiB
YAML
115 lines
5.0 KiB
YAML
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=
|