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

version: '2'
volumes:
        m2:
services:
    # This service is a workaround to set volume permissions so that they are correct for non-root user build
    volume_perms:
        image: alpine
        command: "chown -R 1000:1000 /var/maven"
        volumes:
            - m2:/var/maven/.m2
    # Build+test. Stops on first test failure
    build:
        image: "maven:3.3.9-jdk-8"
        command: ["-Duser.home=/var/maven", "-Pall-adapters", "-Dsurefire.useFile=false", "-DdisableXmlReport=true", "clean", "install"]
        entrypoint: "mvn"
        working_dir: /opt/project
        user: 1000:1000
        environment:
            - MAVEN_OPTS=-Xmx768m -XX:ReservedCodeCacheSize=64m -Xss2048k
            - MAVEN_CONFIG=/var/maven/.m2
        volumes:
            - m2:/var/maven/.m2
            - .:/opt/project
        depends_on:
            - volume_perms
    # Build+test. Does not stop on test failures
    build-all:
        image: "maven:3.3.9-jdk-8"
        command: ["--fail-at-end", "-Duser.home=/var/maven", "-Pall-adapters", "-Dsurefire.useFile=false", "-DdisableXmlReport=true", "clean", "install"]
        entrypoint: "mvn"
        working_dir: /opt/project
        user: 1000:1000
        ports:
            - 5005:5005
        environment:
            - MAVEN_OPTS=-Xmx768m -XX:ReservedCodeCacheSize=64m -Xss2048k
            - MAVEN_CONFIG=/var/maven/.m2
        volumes:
            - m2:/var/maven/.m2
            - .:/opt/project
        depends_on:
            - volume_perms
        # Just build (no tests)
    build-quick:
        image: "maven:3.3.9-jdk-8"
        command: ["-Duser.home=/var/maven", "-Pquick", "-Dsurefire.useFile=false", "-DdisableXmlReport=true", "-DuniqueVersion=false", "-ff", "-Dassemble", "-DskipTests", "-DfailIfNoTests=false", "clean", "install"]
        entrypoint: "mvn"
        working_dir: /opt/project
        user: 1000:1000
        environment:
            - MAVEN_OPTS=-Xmx768m -XX:ReservedCodeCacheSize=64m -Xss2048k
            - MAVEN_CONFIG=/var/maven/.m2
        volumes:
            - m2:/var/maven/.m2
            - .:/opt/project
        depends_on:
            - volume_perms
    # Build+test. Waits for debugger on port 5005. Stops on first test failure
    debug:
        image: "maven:3.3.9-jdk-8"
        command: ["-Duser.home=/var/maven", "-Pall-adapters", "-Dsurefire.useFile=false", "-DdisableXmlReport=true", "-Dopenejb.server.debug", "-Dmaven.surefire.debug", "-Dopenejb.arquillian.debug=true", "clean", "install"]
        entrypoint: "mvn"
        working_dir: /opt/project
        user: 1000:1000
        ports:
            - 5005:5005
        environment:
            - MAVEN_OPTS=-Xmx768m -XX:ReservedCodeCacheSize=64m -Xss2048k
            - MAVEN_CONFIG=/var/maven/.m2
        volumes:
            - m2:/var/maven/.m2
            - .:/opt/project
        depends_on:
            - volume_perms