# 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.

name: CI AND IT

on:
  pull_request:
  push:
    branches: 
      - master
      - 6.x
    tags:
      - 'v*'
    

jobs:
  CI:
    runs-on: ubuntu-18.04
    timeout-minutes: 180
    strategy:
      fail-fast: true
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true
      - uses: actions/setup-java@v1
        with:
          java-version: 8
      - name: 'Install & Test'
        run: |
          export MAVEN_OPTS='-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -Xmx3g'
          ./mvnw -P"agent,backend,ui,dist,CI-with-IT" clean cobertura:cobertura verify install javadoc:javadoc
          CODECOV_TOKEN="d2065307-8f01-4637-9715-2781ef096db7" bash <(curl -s https://codecov.io/bash)
      - name: 'Check Dependencies Licenses'
        run: tools/dependencies/check-LICENSE.sh

  CI-on-Windows:
    runs-on: Windows-latest
    timeout-minutes: 180
    strategy:
      fail-fast: true
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true
      - uses: actions/setup-java@v1
        with:
          java-version: 8
      - name: 'Install & Test'
        run: |
          set MAVEN_OPTS='-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -Xmx3g'
          ./mvnw -P"agent,backend,ui,dist" clean verify install


  CI-on-MacOS:
    runs-on: macos-latest
    timeout-minutes: 180
    strategy:
      fail-fast: true
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true
      - uses: actions/setup-java@v1
        with:
          java-version: 8
      - name: 'Install & Test'
        run: |
          export MAVEN_OPTS='-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -Xmx3g'
          ./mvnw -P"agent,backend,ui,dist" clean verify install
