dist: xenial
sudo: required
language: node_js
node_js:
  - '11'

services:
  - docker

addons:
  # required for internal Aquarius-Brizo communication
  # https://docs.travis-ci.com/user/hosts/
  hosts:
    - aquarius
  apt:
    packages:
      # for Cypress
      - libgconf-2-4

env:
  global:
    # run E2E tests against local Spree
    - REACT_APP_NODE_URI="http://localhost:8545"
    - REACT_APP_AQUARIUS_URI="http://aquarius:5000"
    - REACT_APP_BRIZO_URI="http://localhost:8030"
    - REACT_APP_SECRET_STORE_URI="http://localhost:12001"
    - REACT_APP_FAUCET_URI="http://localhost:3001"
    - REACT_APP_BRIZO_ADDRESS="0x068ed00cf0441e4829d9784fcbe7b9e26d4bd8d0"

    # IPFS client & server config
    - REACT_APP_IPFS_GATEWAY_URI="https://ipfs.oceanprotocol.com"
    - REACT_APP_IPFS_NODE_URI="https://ipfs.oceanprotocol.com:443"
    - IPFS_GATEWAY_URI="https://ipfs.oceanprotocol.com"

    # start Barge with these versions
    - BRIZO_VERSION=v0.6.0
    - AQUARIUS_VERSION=v1.0.2
    - KEEPER_VERSION=v0.12.7
    - EVENTS_HANDLER_VERSION=v0.3.0
    - KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260"
    - FAUCET_TIMESPAN=0

before_install:
  - npm install -g npm
  - npm install -g codacy-coverage
  # Fixes an issue where the max file watch count is exceeded, triggering ENOSPC
  # https://stackoverflow.com/questions/22475849/node-js-error-enospc#32600959
  - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

before_script:
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
  - chmod +x ./cc-test-reporter
  - ./cc-test-reporter before-build
  - git clone https://github.com/oceanprotocol/barge
  - cd barge
  - bash -x start_ocean.sh --no-commons 2>&1 > start_ocean.log &
  - cd ..

script:
  # - ./scripts/install.sh # runs automatically with npm ci
  # executing `npm test` scripts individually here, so first one failing will exit the build
  - npm run lint || travis_terminate 1
  - ./scripts/keeper.sh
  - ./scripts/test.sh
  - ./scripts/coverage.sh
    # Pipe the coverage data to Code Climate
  - ./cc-test-reporter format-coverage -t lcov -o coverage/codeclimate.client.json client/coverage/lcov.info
  - ./cc-test-reporter format-coverage -t lcov -o coverage/codeclimate.server.json server/coverage/lcov.info
  - ./cc-test-reporter sum-coverage coverage/codeclimate.*.json -p 2
  - if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then ./cc-test-reporter upload-coverage; fi
  - npm run test:e2e || travis_terminate 1
  - ./scripts/build.sh

notifications:
  email: false

cache:
  npm: true
  directories:
    # cache folder with Cypress binary
    - ~/.cache
# deploy:
#   - provider: script
#     skip_cleanup: true
#     script: bash -ex ./scripts/deploy_on_k8s.sh
#     on:
#       tags: true
#       all_branches: true
