#
# 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: Daily Build with Newer Java Versions

env:
  MAVEN_ARGS: -V -ntp

on:
  schedule:
    # Run every day at 2 am
    - cron:  '0 2 * * *'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [ '15' ]
    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK ${{ matrix.java }}
        uses: AdoptOpenJDK/install-jdk@v1
        with:
          version: ${{ matrix.java }}
      - name: Cache local Maven repository
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      # first command builds the source check module,
      - name: build tools
        run: |
          ./mvnw ${MAVEN_ARGS} \
            -DskipTests \
            -pl :parent \
            -pl :camel-kafka-connector-aggregator \
            -pl :camel-buildtools \
            clean install
      # second one source check and install :camel-kafka-connector-generator-maven-plugin
      # this is needed to add maven plugin metadata to it,
      - name: build connector-generator-plugin
        run: |
          ./mvnw ${MAVEN_ARGS} \
            -Dcheckstyle.failOnViolation=true \
            -Psourcecheck \
            -DskipTests \
            -pl :camel-kafka-connector-model \
            -pl :camel-kafka-connector-generator-maven-plugin \
            clean install
      # third command source check everything else but :camel-kafka-connector-generator-maven-plugin
      - name: build and itests
        run: |
          ./mvnw ${MAVEN_ARGS} \
            -Dfailsafe.rerunFailingTestsCount=2 \
            -Dcheckstyle.failOnViolation=true \
            -Psourcecheck \
            -DskipIntegrationTests=false \
            -Dhttp.keepAlive=false \
            -Dmaven.wagon.http.pool=false \
            -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 \
            -pl '!:camel-kafka-connector-generator-maven-plugin' \
            clean test
      - name: archive logs
        uses: actions/upload-artifact@v2
        if: always()
        with:
          name: test-logs-java-${{ matrix.java }}
          path: tests/**/target/tests.log