<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.citrusframework</groupId>
    <artifactId>citrus-tools</artifactId>
    <version>5.0.0-M2</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>citrus-agent</artifactId>
  <name>Citrus :: Tools :: Agent</name>
  <description>Citrus Agent</description>

  <properties>
    <jib.disableUpdateChecks>true</jib.disableUpdateChecks>

    <jkube.version>1.18.0</jkube.version>
    <jkube.base.image>registry.access.redhat.com/ubi9/openjdk-17-runtime:1.24</jkube.base.image>
    <jkube.image.push.registry>localhost:5001</jkube.image.push.registry>
    <jkube.image.buildStrategy>docker</jkube.image.buildStrategy>
    <jkube.container-image.nocache>true</jkube.container-image.nocache>
  </properties>

  <dependencies>
    <dependency>
      <groupId>io.vertx</groupId>
      <artifactId>vertx-core</artifactId>
    </dependency>
    <dependency>
      <groupId>io.vertx</groupId>
      <artifactId>vertx-web</artifactId>
    </dependency>
    <dependency>
      <groupId>io.vertx</groupId>
      <artifactId>vertx-web-templ-thymeleaf</artifactId>
    </dependency>

    <!-- Http client -->
    <dependency>
      <groupId>org.apache.httpcomponents.client5</groupId>
      <artifactId>httpclient5</artifactId>
    </dependency>

    <dependency>
      <groupId>tools.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
      <groupId>tools.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
      <groupId>tools.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jakarta-jsonp</artifactId>
    </dependency>

    <!-- Logging -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-iostreams</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j2-impl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
    </dependency>

    <!-- Citrus -->
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-base</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-main</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-jbang</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-xml</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-yaml</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-validation-text</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-validation-json</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-validation-yaml</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.citrusframework</groupId>
      <artifactId>citrus-validation-xml</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.jkube</groupId>
          <artifactId>kubernetes-maven-plugin</artifactId>
          <version>${jkube.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>release-central</id>
      <properties>
        <jkube.image.push.registry>quay.io</jkube.image.push.registry>
        <jkube.image.buildStrategy>jib</jkube.image.buildStrategy>
        <!-- Multi-arch JIB configuration -->
        <jib.platforms>linux/amd64,linux/arm64</jib.platforms>
      </properties>
    </profile>
    <profile>
      <id>docker-image</id>
      <build>
        <finalName>citrus-agent</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${maven.dependency.plugin.version}</version>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${maven.jar.plugin.version}</version>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>lib/</classpathPrefix>
                  <mainClass>org.citrusframework.agent.CitrusAgentServer</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.eclipse.jkube</groupId>
            <artifactId>kubernetes-maven-plugin</artifactId>
            <version>${jkube.version}</version>
            <configuration>
              <pushRegistry>${jkube.image.push.registry}</pushRegistry>
              <buildStrategy>${jkube.image.buildStrategy}</buildStrategy>
              <images>
                <image>
                  <name>citrusframework/citrus-agent:%l</name>
                  <alias>citrus-agent</alias>
                  <build>
                    <from>${jkube.base.image}</from>
                    <assembly>
                      <name>deployments</name>
                      <layers>
                        <layer>
                          <fileSets>
                            <fileSet>
                              <directory>${project.build.directory}/lib</directory>
                              <outputDirectory/>
                            </fileSet>
                          </fileSets>
                        </layer>
                      </layers>
                    </assembly>
                    <env>
                      <LANGUAGE>en_US:en</LANGUAGE>
                      <JAVA_APP_DIR>/deployments</JAVA_APP_DIR>
                      <JAVA_LIB_DIR>/deployments/lib/*:/deployments/resources/*</JAVA_LIB_DIR>
                      <JAVA_MAIN_CLASS>org.citrusframework.agent.CitrusAgentServer</JAVA_MAIN_CLASS>
                      <CITRUS_REPORT_DIRECTORY>/deployments/data/citrus-reports</CITRUS_REPORT_DIRECTORY>
                      <CITRUS_MESSAGE_TRACE_DIRECTORY>/deployments/data/citrus-logs</CITRUS_MESSAGE_TRACE_DIRECTORY>
                    </env>
                    <ports>
                      <port>8080</port>
                    </ports>
                    <user>185</user>
                    <entryPoint>
                      <shell>/opt/jboss/container/java/run/run-java.sh</shell>
                    </entryPoint>
                    <!-- Supported only when using the jib build strategy -->
                    <platforms>
                      <platform>linux/amd64</platform>
                      <platform>linux/arm64</platform>
                    </platforms>
                  </build>
                </image>
              </images>
            </configuration>
            <executions>
              <execution>
                <id>image-build</id>
                <goals>
                  <goal>build</goal>
                  <goal>resource</goal>
                </goals>
                <phase>package</phase>
              </execution>
              <execution>
                <id>image-push</id>
                <goals>
                  <goal>push</goal>
                </goals>
                <phase>install</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
