# 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: ci-workflow

on: [push, pull_request]

env:
  DEFAULT_MAVEN_OPTS: >-
    -Xmx2g
    -XX:ReservedCodeCacheSize=1g
    -XX:+UseG1GC
    -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN
    -Dhttp.keepAlive=false
    -Dmaven.wagon.http.pool=false
  MAVEN_COMMAND: >-
    mvn package verify
    -V
    -D dir-only
    -D disableXmlReport
    -nsu
    -ntp
    -ff
  MAVEN_PROFILES: >-
    -P contrib-check
    -P include-grpc
  MAVEN_PROJECTS: >-
    -pl -nifi-assembly
    -pl -nifi-toolkit/nifi-toolkit-assembly
    -pl -nifi-registry/nifi-registry-assembly
    -pl -minifi/minifi-assembly
    -pl -nifi-system-tests

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

jobs:
  ubuntu-build-en:
    timeout-minutes: 120
    runs-on: ubuntu-latest
    name: Ubuntu Zulu JDK 11 EN
    steps:
      - name: System Information
        run: |
          cat /proc/cpuinfo
          cat /proc/meminfo
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Cache Maven Dependencies
        uses: actions/cache@v2
        with:
          path: |
            ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Cache Node Modules
        uses: actions/cache@v2
        with:
          path: |
            ~/.npm
            **/node_modules
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - name: Set up Java 11
        uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '11'
      - name: Maven Build
        env:
          MAVEN_OPTS: >-
            ${{ env.DEFAULT_MAVEN_OPTS }}
            -Duser.language=en
            -Duser.country=AU
            -Duser.region=AU
            -Duser.timezone=Australia/Melbourne
        run: >
          ${{ env.MAVEN_COMMAND }}
          ${{ env.MAVEN_PROFILES }}
          ${{ env.MAVEN_PROJECTS }}

  macos-build-jp:
    timeout-minutes: 120
    runs-on: macos-latest
    name: MacOS Adopt JDK 8 JP
    steps:
      - name: System Information
        run: |
          top -l 1 | grep PhysMem
          sysctl machdep.cpu
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Cache Maven Dependencies
        uses: actions/cache@v2
        with:
          path: |
            ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Cache Node Modules
        uses: actions/cache@v2
        with:
          path: |
            ~/.npm
            **/node_modules
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - name: Set up Java 8
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'
      - name: Maven Build
        env:
          MAVEN_OPTS: >-
            ${{ env.DEFAULT_MAVEN_OPTS }}
            -Duser.language=ja
            -Duser.country=JP
            -Duser.region=JP
            -Duser.timezone=Asia/Tokyo
        run: >-
          ${{ env.MAVEN_COMMAND }}
          ${{ env.MAVEN_PROFILES }}
          ${{ env.MAVEN_PROJECTS }}

  windows-build:
    timeout-minutes: 120
    runs-on: windows-latest
    name: Windows Zulu JDK 8 FR
    steps:
      - name: System Information
        run: |
          systeminfo
      - name: Setup Git
        run:  |
          git config --global core.autocrlf false
          git config --global core.longpaths true
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Cache Maven Dependencies
        uses: actions/cache@v2
        with:
          path: |
            ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Get NPM Cache Directory
        id: npm-cache-directory
        run: |
          echo "::set-output name=directory::$(npm config get cache)"
      - name: Cache Node Modules
        uses: actions/cache@v2
        with:
          path: |
            ${{ steps.npm-cache-directory.outputs.directory }}
            **/node_modules
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - name: Set up Java 8
        uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '8'
      - name: Maven Build
        env:
          MAVEN_OPTS: >-
            ${{ env.DEFAULT_MAVEN_OPTS }}
            -Duser.language=fr
            -Duser.country=FR
            -Duser.region=FR
            -Duser.timezone=Europe/Paris
        run: >-
          ${{ env.MAVEN_COMMAND }}
          ${{ env.MAVEN_PROJECTS }}
