176 lines
5.4 KiB
XML
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>
|