<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.onap.so</groupId>
		<artifactId>packages</artifactId>
		<version>1.2.0-SNAPSHOT</version>
	</parent>

	<packaging>pom</packaging>
	<artifactId>docker</artifactId>

	<name>MSO Docker Deliveries</name>
	<description>OpenECOMP MSO Docker Deliveries</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<!-- If the maven profile "docker" is specified the parameter -Dmso.git.url=<MsoGitRepo> must be provided
		     i.e: mvn clean install -P docker -Dmso.git.url=https://gerrit.openecomp.org/r-->
		<mso.chef.git.url.prefix>${env.GIT_NO_PROJECT}</mso.chef.git.url.prefix>
		<mso.chef.git.branchname>master</mso.chef.git.branchname>
		<mso.chef.git.url.suffix.chef.repo>so/chef-repo</mso.chef.git.url.suffix.chef.repo>
		<mso.chef.git.url.suffix.chef.config>so/so-config</mso.chef.git.url.suffix.chef.config>
		<mso.project.version>${project.version}</mso.project.version>
		<docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
		<docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
	</properties>

	<build>
		<finalName>${project.artifactId}-${project.version}</finalName>
		<plugins>
		    <plugin>
                <groupId>org.codehaus.groovy.maven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <version>1.0</version>
                <executions>
                  <execution>
                    <phase>validate</phase>
                    <goals>
                      <goal>execute</goal>
                    </goals>
                    <configuration>
                      <source>
                        println project.properties['mso.project.version'];
                        def versionArray;
                        if ( project.properties['mso.project.version'] != null ) {
                            versionArray = project.properties['mso.project.version'].split('\\.');
                        }

                        if ( project.properties['mso.project.version'].endsWith("-SNAPSHOT") ) {
                            project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-SNAPSHOT-latest";
                        } else {
                            project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest";
                        }

                        println 'New Tag for docker:' + project.properties['project.docker.latesttag.version'];
                      </source>
                    </configuration>
                  </execution>
              </executions>
            </plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-scm-plugin</artifactId>
				<version>1.9.5</version>
				<executions>
					<execution>
						<id>chef-repo-checkout</id>
						<goals>
							<goal>checkout</goal>
						</goals>
						<phase>initialize</phase>
						<configuration>
							<connectionUrl>scm:git:${mso.chef.git.url.prefix}/${mso.chef.git.url.suffix.chef.repo}</connectionUrl>
							<checkoutDirectory>src/main/docker/docker-files/chef-configs/chef-repo</checkoutDirectory>
							<scmVersion>${mso.chef.git.branchname}</scmVersion>
							<scmVersionType>branch</scmVersionType>
							<skipCheckoutIfExists>true</skipCheckoutIfExists>
							<pushChanges>false</pushChanges>
						</configuration>
					</execution>
					<execution>
						<id>mso-config-checkout</id>
						<goals>
							<goal>checkout</goal>
						</goals>
						<phase>initialize</phase>
						<configuration>
							<connectionUrl>scm:git:${mso.chef.git.url.prefix}/${mso.chef.git.url.suffix.chef.config}</connectionUrl>
							<checkoutDirectory>src/main/docker/docker-files/chef-configs/mso-config</checkoutDirectory>
							<scmVersion>${mso.chef.git.branchname}</scmVersion>
							<scmVersionType>branch</scmVersionType>
							<skipCheckoutIfExists>true</skipCheckoutIfExists>
							<pushChanges>false</pushChanges>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>io.fabric8</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.19.1</version>

				<configuration>
					<verbose>true</verbose>
					<apiVersion>1.23</apiVersion>
					<pullRegistry>${docker.pull.registry}</pullRegistry>
					<pushRegistry>${docker.push.registry}</pushRegistry>

					<images>
						<image>
							<name>openecomp/jacoco:1.0</name>
							<alias>jacoco</alias>
							<build>
								<cleanup>try</cleanup>
								<dockerFileDir>docker-files</dockerFileDir>
								<dockerFile>Dockerfile.jacoco</dockerFile>

							</build>
						</image>
						<image>
							<name>openecomp/ubuntu-update:1.0</name>
							<alias>ubuntu-update</alias>
							<build>

								<cleanup>try</cleanup>
								<dockerFileDir>docker-files</dockerFileDir>
								<dockerFile>Dockerfile.ubuntu-16.04-update</dockerFile>

							</build>
						</image>
						<image>
							<name>openecomp/wildfly:1.0</name>
							<alias>wildfly</alias>
							<build>

								<cleanup>try</cleanup>
								<dockerFileDir>docker-files</dockerFileDir>
								<dockerFile>Dockerfile.wildfly-10</dockerFile>

							</build>
						</image>
						<image>
							<name>openecomp/mso-arquillian:%l</name>
							<alias>mso-arquillian</alias>
							<build>
								<tags>
								    <tag>${project.docker.latesttag.version}</tag>
									<tag>${project.version}-STAGING-${maven.build.timestamp}</tag>
								</tags>
								<cleanup>try</cleanup>
								<dockerFileDir>docker-files</dockerFileDir>
								<dockerFile>Dockerfile.mso-arquillian</dockerFile>

							</build>
						</image>
						<image>
							<name>openecomp/mso:%l</name>
							<alias>mso</alias>
							<build>
								<tags>
									<tag>${project.version}-STAGING-${maven.build.timestamp}</tag>
									<tag>${project.docker.latesttag.version}</tag>
								</tags>
								<cleanup>try</cleanup>
								<dockerFileDir>docker-files</dockerFileDir>
								<dockerFile>Dockerfile.mso-chef-final</dockerFile>
								<assembly>
									<basedir>/</basedir>

									<user>jboss:jboss:jboss</user>
									<basedir>/opt/jboss/wildfly/standalone/deployments</basedir>
									<descriptor>../../../../deliveries/src/main/assembly/war-pack/mso-wars.xml</descriptor>
								</assembly>
							</build>
						</image>

					</images>
				</configuration>
				<executions>
					<execution>
						<id>clean-images</id>
						<phase>pre-clean</phase>
						<goals>
							<goal>remove</goal>
						</goals>
						<configuration>
							<removeAll>true</removeAll>
							<image>openecomp/mso-arquillian:%l,openecomp/mso:%l</image>
						</configuration>
					</execution>

					<execution>
						<id>generate-images</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>build</goal>
						</goals>
					</execution>

					<execution>
						<id>push-images</id>
						<phase>deploy</phase>
						<goals>
							<goal>build</goal>
							<goal>push</goal>
						</goals>
						<configuration>
							<image>openecomp/mso-arquillian:%l,openecomp/mso:%l,openecomp/jacoco:1.0</image>
						</configuration>
					</execution>
				</executions>

			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8</version>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
