#!/bin/sh
#
# 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.
#

# Since we don't have osx test environment, we use travis-ci to test on osx.
# Free-plan of travis-ci offers limited resources, we only test whether iotdb can be packaged on jdk8 and jdk11.

language: java

#dist: trusty
#sudo: required

matrix:
  include:
    - os: osx
      osx_image: xcode10.1 # with JDK11.0.1+13 installed
      name: osx-oraclejdk11
      script:
        - java -version
        - mvn -version
        - mvn -B apache-rat:check
        - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test
    - os: osx
      osx_image: xcode9.3  # with JDK1.8.0_112-b16 installed
      name: osx-oraclejdk8
    - os: osx
      osx_image: xcode10.1 # with JDK11.0.1+13 installed
      name: osx-openjdk11
      addons:
        homebrew:
          taps:
            #- homebrew/cask-versions
            - AdoptOpenJDK/openjdk
          update: true
          casks: adoptopenjdk-openjdk11
      script:
        - java -version
        - mvn -version
        - mvn -B apache-rat:check
        - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test
    - os: osx
      osx_image: xcode9.3  # with JDK1.8.0_112-b16 installed
      name: osx-openjdk8
      addons:
        homebrew:
          taps:
           #- homebrew/cask-versions
           - AdoptOpenJDK/openjdk
          update: true
          casks: adoptopenjdk-openjdk8
#    - os: windows
#      language: c
#      name: win-oraclejdk11
#      install:
#        - choco install jdk11 -params 'installdir=c:\\java11'
#        - export PATH=$PATH:"/c/java11/bin"
#        - export JAVA_HOME="/c/java11"
#        - wget -q https://www-eu.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip
#        - /C/Progra~1/7-Zip/7z.exe x apache-maven-3.6.1-bin.zip -o/c/mvn361
#        - export "MAVEN_HOME=/c/mvn361/apache-maven-3.6.1"
#        - export "M2_HOME=/c/mvn361/apache-maven-3.6.1"
#        - export "PATH=$MAVEN_HOME/bin:$PATH"
#      script:
#        - java -version
#        - mvn -version
#        - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test
          
    - os: windows
      language: c
      name: win-oraclejdk8
      before_install:
        - choco install jdk8 -params 'installdir=c:\\jdk8'
        - wget --no-check-certificate https://www-eu.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip
        - /C/Progra~1/7-Zip/7z.exe x apache-maven-3.6.1-bin.zip -o/c/mvn361
      before_script:
        - export "JAVA_HOME=/c/jdk8"
        - export "PATH=/c/jdk8/bin:$PATH"
        - export "PATH=/c/jdk8/jre/bin:$PATH"
        - export "MAVEN_HOME=/c/mvn361/apache-maven-3.6.1"
        - export "M2_HOME=/c/mvn361/apache-maven-3.6.1"
        - export "PATH=/c/mvn361/apache-maven-3.6.1/bin:$PATH"
      script:
        - java -version
        - mvn -version
        - mvn -B clean integration-test

    - os: linux
      name: linux-openjdk11
      dist: trusty
      sudo: required
      before_install:
        - wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz -O jdk11.tar.gz
        - tar -xzf jdk11.tar.gz
      before_script:
        - export JAVA_HOME=$PWD/jdk-11.0.2/
        - export PATH=$JAVA_HOME/bin:$PATH
      script:
        - java -version
        - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test
    - os: linux
      name: linux-openjdk8
      dist: trusty
      jdk: openjdk8
    - os: linux
      name: linux-oraclejdk8
      dist: trusty
      jdk: oraclejdk8
#    - os: linux
#      name: linux-oraclejdk11
#      dist: trusty
#      jdk: oraclejdk11
#      script:
#        - java -version
#        - mvn -version
#        - mvn -B apache-rat:check
#        - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test

cache:
  directories:
    - '$HOME/.m2/repository'
    - '$HOME/.sonar/cache'



# skip `before_install` stage
before_install: true

# skip `install` stage
install: true

script:
  - java -version
  - ./mvnw.sh -B -ntp apache-rat:check
  - ./mvnw.sh -B -ntp clean integration-test

after_success:

