# Configuration file for Travis continuous integration.
#
# 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

addons:
  sonarcloud:
    organization: "kylin"
    token:
      secure: "c918989d018ae3af899798716c35f4fe125296a4"

cache:
  directories:
    - $HOME/.m2

jdk:
  - openjdk8

before_script:
  - echo "MAVEN_OPTS='-Xms1024m -Xmx3072m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m'" > ~/.mavenrc

script:
  - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test  coveralls:report
  - if [[ -n "${TRAVIS_PULL_REQUEST_SLUG}" && "${TRAVIS_PULL_REQUEST_SLUG}" != "${TRAVIS_REPO_SLUG}" ]]; then
        echo "The pull request from ${TRAVIS_PULL_REQUEST_SLUG} is an EXTERNAL pull request. Skip sonar analysis.";
    else
        git fetch --unshallow --quiet;
        mvn sonar:sonar;
    fi

notification:
  email:
    recipients:
      - dev@kylin.apache.org
    on_failure: always

after_success:
  - bash <(curl -s https://codecov.io/bash)
  
before_cache:
  # Remove project's local artifacts to force maven reactor resolve
  - rm -rf $HOME/.m2/repository/org/apache/kylin

# blocklist
branches:
  except:
  - document