# 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.

language: java
os: linux
dist: bionic
arch: amd64
jdk:
  - openjdk11
cache:
  bundler: false
  cargo: false
  directories:
    - '$HOME/.m2'
git:
  depth: 2
env:
  global:
  - MAVEN_OPTS="-Xmx4096M -Xss128M -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -noverify"
install: true
notifications:
  email:
    - dev@syncope.apache.org
stages:
  - build
  - validate
  - test
  - fit
jobs:
  include:
    - stage: build
      name: "Build"
      script: mvn -U --quiet -T 1C -P skipTests,all
      #######################################################
    - stage: validate
      name: "Checkstyle, Legal Files, Modernizer and Release Audit Tool (RAT) Analysis"
      script: mvn -T 1C checkstyle:check ianal:verify-legal-files modernizer:modernizer apache-rat:check
      ######################################################
    - stage: test
      name: "Persistence Unit Tests: PostgreSQL (JSONB)"
      script: mvn -f core/persistence-jpa-json/pom.xml -P postgres -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true
    - stage: test
      name: "Persistence Unit Tests: MySQL (JSON)"
      script: mvn -f core/persistence-jpa-json/pom.xml -P mysql -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true
      ######################################################
    - stage: fit
      name: "Integration Tests: Tomcat / PostgreSQL / JSON"
      script: mvn -f fit/core-reference/pom.xml -P postgres-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / PostgreSQL (JSONB) / JSON"
      script: mvn -f fit/core-reference/pom.xml -P pgjsonb-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MySQL / JSON"
      script: mvn -f fit/core-reference/pom.xml -P mysql-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MySQL (JSON) / JSON"
      script: mvn -f fit/core-reference/pom.xml -P myjson-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MariaDB / JSON"
      script: mvn -f fit/core-reference/pom.xml -P mariadb-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / JSON + Elasticsearch"
      script: mvn -f fit/core-reference/pom.xml -P elasticsearch-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / JSON + Zookeeper"
      script: mvn -f fit/core-reference/pom.xml -P zookeeper-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    #####################################################
