#
# 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 \
            -Pno-apache-snapshots \
            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 \
          -Pno-apache-snapshots \
          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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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 \
            -Pno-apache-snapshots \
            -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
