# Licensed to the Apache Software Foundation (ASF) under one or more contributor license
# agreements. See the NOTICE file distributed with this work for additional information regarding
# copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the License. You may obtain a
# copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under
# the License.


language: java scala node_js

services:
  - docker

env:
  - COMPOSE_FILE=griffin-doc/docker/compose/docker-compose-batch.yml


jdk:
  - oraclejdk8
scala:
  - 2.10.6
node_js:
  - "6"
git:
  quiet: true
cache:
  directories:
  - $HOME/.m2

install:
  - npm install -g bower

before_script:
  - docker-compose up -d


# keep 30, need change according to ci logs.
script:
  - export MAVEN_SKIP_RC=true
  - export MAVEN_OPTS="-Xms1g -Xmx2g -XX:MaxPermSize=512m"
  - travis_wait 30 mvn clean test -q

