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

#
# Build notes:
# - We override local maven repository to be hosted in /home/runner/work/geronimo-arthur/geronimo-arthur/ which is the clone directory to ensure we can use cache action
#

name: Github CI

on: [push, pull_request]

env:
  MAVEN_OPTS: -Dmaven.repo.local=/home/runner/work/geronimo-arthur/geronimo-arthur/.m2 -Dmaven.artifact.threads=256 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn

jobs:
  build:
    name: Main Build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [ '1.8', '11.0.4' ]
    steps:
    - name: Clone
      uses: actions/checkout@v1
    - name: Cache Maven Repository
      uses: actions/cache@v1
      with:
        path: /home/runner/work/geronimo-arthur/geronimo-arthur/.m2
        key: m2_repository
    - name: Set up JDK ${{ matrix.java }}
      uses: actions/setup-java@v1
      with:
        java-version: ${{ matrix.java }}
    - name: Build
      run: mvn install -Pintegration-tests
    - name: Remove Snapshots Before Caching
      run: find /home/runner/work/geronimo-arthur/geronimo-arthur/.m2 -name '*SNAPSHOT' | xargs rm -Rf
  security_audit:
    name: Security Audit
    runs-on: ubuntu-latest
    steps:
    - name: Clone
      uses: actions/checkout@v1
    - name: Cache Maven Repository
      uses: actions/cache@v1
      with:
        path: /home/runner/work/geronimo-arthur/geronimo-arthur/.m2
        key: m2_repository
    - name: Set up JDK
      uses: actions/setup-java@v1
      with:
        java-version: '1.8'
    - name: Build
      run: mvn install -Pintegration-tests -DskipTests -Dexec.skip=true ossindex:audit
    - name: Remove Snapshots Before Caching
      run: find /home/runner/work/geronimo-arthur/geronimo-arthur/.m2 -name '*SNAPSHOT' | xargs rm -Rf
