language: java
sudo: required
dist: trusty
services:
  - docker
branches:
  only:
    - master
before_cache:
  - rm -rf $HOME/.gradle/caches/5.*/
  - rm -rf $HOME/.gradle/caches/4.*/
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
  - find ~/.gradle/caches/ -name "*.lock" -type f -delete
cache:
  bundler: false
  cargo: false
  directories:
    - $HOME/.m2
    - $HOME/.npm/
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
env:
  global:
    - JAVA_OPTS="-Xms512m -Xmx4048m -Xss128m -XX:ReservedCodeCacheSize=512m -XX:+UseG1GC -Xverify:none -server"
    - GRADLE_OPTS="-Xms512m -Xmx1024m -Xss128m -XX:ReservedCodeCacheSize=512m -XX:+UseG1GC -Xverify:none -server"
jdk:
- openjdk11
before_install:
- echo -e "Configuring Gradle wrapper...\n"
- mkdir -p ~/.gradle && echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties
- chmod -R 777 ./gradlew
- chmod -R 777 *.sh
install: true
stages:
  - build
  - validate
  - docker
jobs:
  include:
    - stage: build
      script: ./gradlew clean build --stacktrace --no-daemon --refresh-dependencies -Dorg.gradle.internal.http.socketTimeout=600000 -Dorg.gradle.internal.http.connectionTimeout=600000
      name: "Build CAS"
      ############################################
    - stage: validate
      script: ./gradlew downloadShell
      name: "Download CAS Shell"
    - stage: validate
      script: ./gradlew listTemplateViews
      name: "List CAS Template Views"
    - stage: validate
      script: ./gradlew explodeWar
      name: "Unzip CAS Web Application"
      ############################################
    - stage: docker
      script: ./gradlew build jibDockerBuild --stacktrace --no-daemon --refresh-dependencies
      name: "Build Docker Image via Jib"
    - stage: docker
      script: docker-compose build
      name: "Build Docker Image via Docker Compose"
    - stage: docker
      script: ./docker-build.sh
      name: "Build Docker Image"