#
# 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: Build PR

on:
  pull_request:
    branches:
      - master

env:
  LANG: en_US

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Build Project
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
            clean install
      - name: Save Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
  build-alternative-jvm:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [ '11' , '12' ]
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK ${{ matrix.java }}
      uses: actions/setup-java@v1
      with:
        java-version: ${{ matrix.java }}
    - name: Build on ${{ matrix.java }}
      run: |
        ./mvnw -V -B \
          -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
          clean verify
  core:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-core \
            -pl :camel-quarkus-integration-test-core-impl \
            -pl :camel-quarkus-integration-test-core-main \
            -pl :camel-quarkus-integration-test-core-main-collector \
            -pl :camel-quarkus-integration-test-core-main-xml
  foundation:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-bean \
            -pl :camel-quarkus-integration-test-seda \
            -pl :camel-quarkus-integration-test-file \
            -pl :camel-quarkus-integration-test-scheduler \
            -pl :camel-quarkus-integration-test-jsonpath \
            -pl :camel-quarkus-integration-test-exec \
            -pl :camel-quarkus-integration-test-controlbus \
            -pl :camel-quarkus-integration-test-hystrix
  platform:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-platform-http \
            -pl :camel-quarkus-integration-test-platform-http-engine \
            -pl :camel-quarkus-integration-test-microprofile \
            -pl :camel-quarkus-integration-test-opentracing
  messaging:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-sjms \
            -pl :camel-quarkus-integration-test-kafka \
            -pl :camel-quarkus-integration-test-paho
  dataformats:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-base64 \
            -pl :camel-quarkus-integration-test-snakeyaml \
            -pl :camel-quarkus-integration-test-tagsoup \
            -pl :camel-quarkus-integration-test-xslt \
            -pl :camel-quarkus-integration-test-csv \
            -pl :camel-quarkus-integration-test-jackson \
            -pl :camel-quarkus-integration-test-dataformat
  networking:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-http \
            -pl :camel-quarkus-integration-test-netty \
            -pl :camel-quarkus-integration-test-servlet
  sql:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-jdbc \
            -pl :camel-quarkus-integration-test-mongodb \
            -pl :camel-quarkus-integration-test-sql
  cloud:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-aws \
            -pl :camel-quarkus-integration-test-consul
  misc:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-bean-validator \
            -pl :camel-quarkus-integration-test-dozer \
            -pl :camel-quarkus-integration-test-ftp \
            -pl :camel-quarkus-integration-test-infinispan \
            -pl :camel-quarkus-integration-test-mail \
            -pl :camel-quarkus-integration-test-pdf \
            -pl :camel-quarkus-integration-test-tarfile \
            -pl :camel-quarkus-integration-test-validator \
            -pl :camel-quarkus-integration-test-zipfile
  saas:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set Up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Restore Cache
        uses: actions/cache@v1
        with:
          path: ~/.m2/repository
          key: maven-${{ github.sha }}
          restore-keys: |
            maven-${{ github.sha }}
      - name: Integration Tests
        run: |
          ./mvnw -V -B \
            -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
            -Dnative \
            -Ddocker \
            -DskipTests \
            -pl :camel-quarkus-integration-test-salesforce \
            -pl :camel-quarkus-integration-test-slack \
            -pl :camel-quarkus-integration-test-twitter
  # memoryhogs:
  #   runs-on: ubuntu-latest
  #   needs: build
  #   steps:
  #     - name: Checkout
  #       uses: actions/checkout@v2
  #     - name: Set Up Java
  #       uses: actions/setup-java@v1
  #       with:
  #         java-version: 1.8
  #     - name: Restore Cache
  #       uses: actions/cache@v1
  #       with:
  #         path: ~/.m2/repository
  #         key: maven-${{ github.sha }}
  #         restore-keys: |
  #           maven-${{ github.sha }}
  #     # run the :camel-quarkus-integration-test-fhir as standalone process
  #     # as it building the native image including camel-fhir requires lot
  #     # of memory this we nee to limit it to avoid the process fail for OOM.
  #     - name: Integration Tests
  #       run: |
  #         ./mvnw -V -B \
  #           -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn clean verify \
  #           -Dnative \
  #           -Ddocker \
  #           -DskipTests \
  #           -Dnative-image.xmx=5g \
  #           -pl :camel-quarkus-integration-test-fhir
