sudo: false

language: java

env:
  global:
    - GRADLE_OPTS=-Xmx512m
    - LDFLAGS=-L/tmp/protobuf/lib
    - CXXFLAGS=-I/tmp/protobuf/include
    - LD_LIBRARY_PATH=/tmp/protobuf/lib

before_install:
  - rm ~/.m2/settings.xml || true # Avoid repository.apache.org, which has QPS limits and is useless
  - mkdir -p $HOME/.gradle/caches &&
    ln -s /tmp/gradle-caches-modules-2 $HOME/.gradle/caches/modules-2
  - mkdir -p $HOME/.gradle &&
    ln -s /tmp/gradle-wrapper $HOME/.gradle/wrapper
  - buildscripts/make_dependencies.sh # build protoc into /tmp/protobuf
  - mkdir -p $HOME/.gradle
  - echo "checkstyle.ignoreFailures=false" >> $HOME/.gradle/gradle.properties
  - echo "failOnWarnings=true" >> $HOME/.gradle/gradle.properties
  - echo "errorProne=true" >> $HOME/.gradle/gradle.properties

install:
  - ./gradlew assemble generateTestProto install
  - pushd examples && ./gradlew build && popd
  - pushd examples && mvn verify && popd

before_script:
  - test -z "$(git status --porcelain)" || (git status && echo Error Working directory is not clean. Forget to commit generated files? && false)

script:
  - ./gradlew check :grpc-all:jacocoTestReport

after_success:
    # Upload to coveralls once, instead of for each job in the matrix
  - if [[ "$TRAVIS_JOB_NUMBER" == *.1 ]]; then ./gradlew :grpc-all:coveralls; fi
  - bash <(curl -s https://codecov.io/bash)

os:
  - linux

jdk:
  # net.ltgt.errorprone supports jdk8 and jdk9, but has problems with jdk10
  # For jdk10, we need to switch over to using net.ltgt.errorprone-javacplugin,
  # and likely update to the latest com.google.errorprone:error_prone_core.
  # We have decided not to make our build.gradle support both plugins, so when
  # we finally move off of jdk8 and jdk9 we will need use the javac annotation
  # processor based plugin.
  - oraclejdk8  # if both jdk 8 and 9 are removed, migrate to net.ltgt.errorprone-javacplugin (see above comment)
  - oraclejdk9  # if both jdk 8 and 9 are removed, migrate to net.ltgt.errorprone-javacplugin (see above comment)
  - oraclejdk10

notifications:
  email: false

cache:
  directories:
    - /tmp/protobuf-cache
    - /tmp/gradle-caches-modules-2
    - /tmp/gradle-wrapper

before_cache:
  # The lock changes based on folder name; normally $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm /tmp/gradle-caches-modules-2/gradle-caches-modules-2.lock
  - find $HOME/.gradle/wrapper -not -name "*-all.zip" -and -not -name "*-bin.zip" -delete
