<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2021-2022 Nordix Foundation.
  ================================================================================
  Licensed 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.

  SPDX-License-Identifier: Apache-2.0
  ============LICENSE_END=========================================================
-->

<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.policy.clamp</groupId>
        <artifactId>clamp-packages</artifactId>
        <version>6.3.0-SNAPSHOT</version>
    </parent>

    <packaging>pom</packaging>
    <artifactId>policy-clamp-docker</artifactId>
    <name>${project.artifactId}</name>
    <description>Policy clamp docker image</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <dist.project.version>${project.version}</dist.project.version>
        <docker.skip>false</docker.skip>
        <docker.skip.build>false</docker.skip.build>
        <docker.skip.push>false</docker.skip.push>
        <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
        <docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
        <docker.clamp-runtime-acm.dockerFile>AcmRuntime.Dockerfile</docker.clamp-runtime-acm.dockerFile>
        <docker.clamp-runtime-acm.contextDir>${project.basedir}/src/main/docker</docker.clamp-runtime-acm.contextDir>
        <docker.clamp-ac-pf-ppnt.dockerFile>PolicyParticipant.Dockerfile</docker.clamp-ac-pf-ppnt.dockerFile>
        <docker.clamp-ac-pf-ppnt.contextDir>${project.basedir}/src/main/docker</docker.clamp-ac-pf-ppnt.contextDir>
        <docker.clamp-ac-k8s-ppnt.dockerFile>KubernetesParticipant.Dockerfile</docker.clamp-ac-k8s-ppnt.dockerFile>
        <docker.clamp-ac-k8s-ppnt.contextDir>${project.basedir}/src/main/docker</docker.clamp-ac-k8s-ppnt.contextDir>
        <docker.clamp-ac-http-ppnt.dockerFile>HttpParticipant.Dockerfile</docker.clamp-ac-http-ppnt.dockerFile>
        <docker.clamp-ac-http-ppnt.contextDir>${project.basedir}/src/main/docker</docker.clamp-ac-http-ppnt.contextDir>
        <docker.clamp-acm-element-impl.dockerFile>ElementParticipant.Dockerfile</docker.clamp-acm-element-impl.dockerFile>
        <docker.clamp-acm-element-impl.contextDir>${project.basedir}/src/main/docker</docker.clamp-acm-element-impl.contextDir>
        <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
    </properties>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>groovy-maven-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <source>https://github.com/onap/policy-docker/raw/master/utils/groovy/docker-tag.groovy</source>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>io.github.git-commit-id</groupId>
                <artifactId>git-commit-id-maven-plugin</artifactId>
                <version>5.0.0</version>
                <executions>
                    <execution>
                        <id>get-the-git-infos</id>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                        <phase>initialize</phase>
                    </execution>
                </executions>
                <configuration>
                    <skipPoms>false</skipPoms>
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
                    <includeOnlyProperties>
                        <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
                        <includeOnlyProperty>^git.commit.id.abbrev$</includeOnlyProperty>
                    </includeOnlyProperties>
                    <commitIdGenerationMode>full</commitIdGenerationMode>
                </configuration>
            </plugin>

            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>

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

                    <images>
                        <image>
                            <name>onap/policy-clamp-runtime-acm</name>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-runtime-acm.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-runtime-acm.contextDir}</contextDir>
                                <tags>
                                    <tag>${project.version}</tag>
                                    <tag>${project.version}-${maven.build.timestamp}</tag>
                                    <tag>${project.docker.latest.minmax.tag.version}</tag>
                                </tags>
                                <assembly>
                                    <inline>
                                        <dependencySets>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-tarball</include>
                                                </includes>
                                                <outputDirectory>/lib</outputDirectory>
                                                <outputFileNameMapping>policy-clamp-runtime-acm.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-runtime-acm</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-runtime-acm.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                        <image>
                            <name>onap/policy-clamp-ac-pf-ppnt</name>
                            <alias>onap-policy-clamp-ac-pf-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-pf-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-pf-ppnt.contextDir}</contextDir>
                                <tags>
                                    <tag>${project.version}</tag>
                                    <tag>${project.version}-${maven.build.timestamp}</tag>
                                    <tag>${project.docker.latest.minmax.tag.version}</tag>
                                </tags>
                                <assembly>
                                    <inline>
                                        <dependencySets>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-tarball</include>
                                                </includes>
                                                <outputDirectory>/lib</outputDirectory>
                                                <outputFileNameMapping>policy-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-policy</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-policy.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                        <image>
                            <name>onap/policy-clamp-ac-k8s-ppnt</name>
                            <alias>onap-policy-clamp-ac-k8s-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-k8s-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-k8s-ppnt.contextDir}</contextDir>
                                <tags>
                                    <tag>${project.version}</tag>
                                    <tag>${project.version}-${maven.build.timestamp}</tag>
                                    <tag>${project.docker.latest.minmax.tag.version}</tag>
                                </tags>
                                <assembly>
                                    <inline>
                                        <dependencySets>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-tarball</include>
                                                </includes>
                                                <outputDirectory>/lib</outputDirectory>
                                                <outputFileNameMapping>kubernetes-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-kubernetes</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-kubernetes.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                        <image>
                            <name>onap/policy-clamp-ac-http-ppnt</name>
                            <alias>onap-policy-clamp-ac-http-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-http-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-http-ppnt.contextDir}</contextDir>
                                <tags>
                                    <tag>${project.version}</tag>
                                    <tag>${project.version}-${maven.build.timestamp}</tag>
                                    <tag>${project.docker.latest.minmax.tag.version}</tag>
                                </tags>
                                <assembly>
                                    <inline>
                                        <dependencySets>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-tarball</include>
                                                </includes>
                                                <outputDirectory>/lib</outputDirectory>
                                                <outputFileNameMapping>http-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-http</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-http.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                        <image>
                            <name>onap/policy-clamp-acm-element-impl</name>
                            <alias>onap-policy-clamp-acm-element-impl</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-acm-element-impl.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-acm-element-impl.contextDir}</contextDir>
                                <tags>
                                    <tag>${project.version}</tag>
                                    <tag>${project.version}-${maven.build.timestamp}</tag>
                                    <tag>${project.docker.latest.minmax.tag.version}</tag>
                                </tags>
                                <assembly>
                                    <inline>
                                        <dependencySets>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp:policy-clamp-tarball</include>
                                                </includes>
                                                <outputDirectory>/lib</outputDirectory>
                                                <outputFileNameMapping>element-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-acm-element-impl</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-acm-element-impl.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                    </images>
                </configuration>

                <executions>
                    <execution>
                        <id>clean-images</id>
                        <phase>pre-clean</phase>
                        <goals>
                            <goal>remove</goal>
                        </goals>
                        <configuration>
                            <removeAll>true</removeAll>
                        </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>
                    </execution>
                </executions>
            </plugin>

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

    <dependencies>
        <dependency>
            <groupId>org.onap.policy.clamp</groupId>
            <artifactId>policy-clamp-tarball</artifactId>
            <version>${project.version}</version>
            <classifier>tarball</classifier>
            <type>tar.gz</type>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.clamp.participant</groupId>
            <artifactId>policy-clamp-participant-impl-policy</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.clamp.participant</groupId>
            <artifactId>policy-clamp-participant-impl-kubernetes</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.clamp.participant</groupId>
            <artifactId>policy-clamp-participant-impl-http</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.clamp.participant</groupId>
            <artifactId>policy-clamp-acm-element-impl</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
