# 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: Maven CI

on:
  workflow_dispatch: {}
  push:
    branches: [ main, '1.10.x', '1.9.x' ]
  pull_request:
    branches: [ main, '1.10.x', '1.9.x' ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up JDK
        uses: actions/setup-java@v2
        with:
          java-version: 8
          distribution: temurin

      - name: License Check
        run: mvn apache-rat:check "-Drat.consoleOutput"

      - name: Build with Maven
        run: mvn verify --show-version --errors --batch-mode --no-transfer-progress -Pdocs

  build-all:
    needs: build

    strategy:
      matrix:
        os: [ 'ubuntu-latest', 'windows-latest', 'macOS-latest' ]
        jdk: [ 8, 11, 17 ]
        dist: [ 'temurin', 'adopt-openj9', 'zulu' ]
        exclude:
          # was already built
          - os: 'ubuntu-latest'
            jdk: 8
            dist: 'temurin'
          # exclude some builds, because MacOs builds have fewer resources available.
          # excludes java 16 on macOS.
          - os: 'macOS-latest'
            jdk: 16
          # exclude temurin on MacOS. zulu (also hotspot) and OpenJ9 are sufficient.
          - os: 'macOS-latest'
            dist: 'temurin'
      fail-fast: false

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: ${{ matrix.jdk }}
          distribution: ${{ matrix.dist }}

      - name: Build with Maven
        run: mvn verify --show-version --errors --batch-mode --no-transfer-progress -Pdocs
