Files

176 lines
5.4 KiB
XML

<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>
<groupId>com.inteligr8.container</groupId>
<artifactId>base</artifactId>
<version>${base.version}-${os.image.name}-${os.image.version}</version>
<name>Base Image</name>
<description>This is a purpose-agnostic base image</description>
<packaging>pom</packaging>
<properties>
<base.version>1.0</base.version>
<!-- The release version of Debian Linux to use as the base -->
<!-- See: https://hub.docker.com/_/debian -->
<os.image.prefix></os.image.prefix>
<os.image.name>debian</os.image.name>
<os.image.version>12.14</os.image.version>
<os.image.suffix>-slim</os.image.suffix>
<!-- The Docker image meta-data for pushing the build -->
<image.name>inteligr8/${project.artifactId}</image.name>
<image.tag>${project.version}</image.tag>
<image.registry>docker.inteligr8.com</image.registry>
<!-- using version properties so they can be overridden by child projects or Maven executions -->
<maven-resources-plugin.version>3.5.0</maven-resources-plugin.version>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<kubernetes-maven-plugin.version>1.19.0</kubernetes-maven-plugin.version>
<regex-maven-plugin.version>1.0.7</regex-maven-plugin.version>
<!-- these properties are only used in the container -->
<image.containerd.directory>/opt/inteligr8/containerd</image.containerd.directory>
</properties>
<build>
<resources>
<resource>
<directory>src/main/containerd</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/resources</targetPath>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${kubernetes-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.inteligr8</groupId>
<artifactId>regex-maven-plugin</artifactId>
<version>${regex-maven-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.inteligr8</groupId>
<artifactId>regex-maven-plugin</artifactId>
<executions>
<execution>
<id>determine-os-image-short-name</id>
<phase>validate</phase>
<goals>
<goal>replace-property</goal>
</goals>
<configuration>
<property>os.image.name</property>
<newProperty>os.image.shortName</newProperty>
<regexes>
<regex>
<pattern>(.{3}).+</pattern>
<replacement>$1</replacement>
</regex>
</regexes>
</configuration>
</execution>
<execution>
<id>determine-os-image-major-version</id>
<phase>validate</phase>
<goals>
<goal>replace-property</goal>
</goals>
<configuration>
<property>os.image.version</property>
<newProperty>os.image.majorVersion</newProperty>
<regexes>
<regex>
<pattern>([^.]+).*</pattern>
<replacement>$1</replacement>
</regex>
</regexes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals><goal>resources</goal></goals>
<configuration>
<encoding>utf-8</encoding>
<propertiesEncoding>utf-8</propertiesEncoding>
</configuration>
</execution>
</executions>
</plugin>
<!-- This plugin build and pushes the Docker image -->
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<configuration>
<images>
<image>
<name>${image.name}:${image.tag}</name>
<registry>${image.registry}</registry>
<build>
<contextDir>${project.build.directory}/resources</contextDir>
<dockerFile>${project.basedir}/Containerfile</dockerFile>
<tags>
<tag>${base.version}-${os.image.shortName}${os.image.majorVersion}</tag>
</tags>
</build>
</image>
</images>
<verbose>true</verbose>
</configuration>
<executions>
<!-- This execution builds the Docker image -->
<execution>
<id>docker-build</id>
<phase>package</phase>
<goals><goal>build</goal></goals>
</execution>
<!-- This execution pushes the built Docker image to the configured Docker Registry -->
<execution>
<id>docker-push</id>
<phase>deploy</phase>
<goals><goal>push</goal></goals>
</execution>
</executions>
</plugin>
<!-- This plugin prevents the project from deploying to the Maven Repository, as it is pointless -->
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>no-docker</id>
<properties>
<jkube.build.strategy>jib</jkube.build.strategy>
</properties>
</profile>
</profiles>
</project>