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

sudo: false
language: java
jdk:
  - openjdk11
cache:
  bundler: false
  cargo: false
  directories:
    - $HOME/.m2
git:
  depth: 2
matrix:
  fast_finish: true
env:
  global:
  - MAVEN_OPTS="-Xmx4096M -Xss128M -XX:+CMSClassUnloadingEnabled -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -noverify"
install: true
notifications:
  email:
    - dev@syncope.apache.org
stages:
  - build
  - validate
  - test
  - fit
jobs:
  include:
    - stage: build
      script: mvn -T 1C --quiet -P skipTests,all
      name: "Build"
      #######################################################
    - stage: validate
      script: mvn -T 1C checkstyle:check ianal:verify-legal-files modernizer:modernizer apache-rat:check --quiet
      name: "Checkstyle, Legal Files, Modernizer and Release Audit Tool (RAT) Analysis"
      ######################################################
    - stage: test
      script: mvn -T 1C clean test -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dskip.sass=true
      name: "Unit Tests"
      ######################################################
    - stage: fit
      script: travis_wait 55 mvn -f fit/core-reference/pom.xml verify -P full-it,all -T 1C -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
      name: "Full Integration Tests via JSON Content-Type"
      #####################################################
  after_failure:
    - cat fit/core-reference/target/log/*
    - cat fit/core-reference/target/failsafe-reports/org.apache.syncope.fit.*-output.txt
