<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2021-2023 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>7.0.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>
        <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
    </properties>

    <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-simulator</artifactId>
            <version>${project.version}</version>
        </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-participant-impl-kserve</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.clamp.participant</groupId>
            <artifactId>policy-clamp-participant-impl-a1pms</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>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>groovy-maven-plugin</artifactId>
                <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>
            </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-ac-a1pms-ppnt</name>
                            <alias>onap-policy-clamp-ac-a1pms-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-a1pms-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-a1pms-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>a1pms-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-a1pms</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-a1pms.jar</outputFileNameMapping>
                                            </dependencySet>
                                        </dependencySets>
                                    </inline>
                                </assembly>
                            </build>
                        </image>
                        <image>
                            <name>onap/policy-clamp-ac-kserve-ppnt</name>
                            <alias>onap-policy-clamp-ac-kserve-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-kserve-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-kserve-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>kserve-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-kserve</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-kserve.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>
                        <image>
                            <name>onap/policy-clamp-ac-sim-ppnt</name>
                            <alias>onap-policy-clamp-ac-sim-ppnt</alias>
                            <build>
                                <cleanup>try</cleanup>
                                <dockerFile>${docker.clamp-ac-sim-ppnt.dockerFile}</dockerFile>
                                <contextDir>${docker.clamp-ac-sim-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>sim-participant.tar.gz</outputFileNameMapping>
                                            </dependencySet>
                                            <dependencySet>
                                                <includes>
                                                    <include>org.onap.policy.clamp.participant:policy-clamp-participant-impl-simulator</include>
                                                </includes>
                                                <outputFileNameMapping>policy-clamp-participant-impl-sim.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>
</project>
