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

# This workflow will build a Java project with Maven
# See also:
#   https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: CI

on:
  push:
    branches: [ '*' ]
  pull_request:
    branches: [ '*' ]

jobs:
  mvn:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11
    - name: Cache local maven repository
      uses: actions/cache@v2
      with:
        path: |
          ~/.m2/repository/
          !~/.m2/repository/org/apache/fluo
        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
        restore-keys: ${{ runner.os }}-m2
    - name: Build with Maven
      run: mvn -B -V -e -ntp "-Dstyle.color=always" verify javadoc:jar
      env:
        MAVEN_OPTS: -Djansi.force=true
    - name: Upload unit test results
      if: ${{ failure() }}
      uses: actions/upload-artifact@v2
      with:
        name: surefire-reports
        path: ./**/target/surefire-reports/
        if-no-files-found: ignore
    - name: Upload integration test results
      if: ${{ failure() }}
      uses: actions/upload-artifact@v2
      with:
        name: failsafe-reports
        path: ./**/target/failsafe-reports/
        if-no-files-found: ignore
    - name: Upload mini test logs
      if: ${{ failure() }}
      uses: actions/upload-artifact@v2
      with:
        name: mini-tests-logs
        path: ./**/target/**/mini-tests/**/logs/
        if-no-files-found: ignore

