summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2022-07-31 19:12:28 +0100
committerliamfallon <liam.fallon@est.tech>2022-08-22 17:22:12 +0100
commit18c442ae336dea9945512245ec49b61978a893d5 (patch)
treeae91f5b82fc49885d952f5f759f88ed2593db388
parent0f2099e2f0527ffc5c19637f04a5ad8dee75047e (diff)
Generate onap images locally on ARM architecture
The defailt ONAP base images are generated for X86 64 architecture. On ARM architecture, these base images cannot be used locally because they don't run properly in Docker on ARM architecture. Docker images based on these images are also forced to X86 64 architecure. In order to run the Policy Framework locally on a computer with ARM architecture such as an Apple M1 Macbook, local Docker images should be built that use ARM archtiecture. The changes in this commit introduce a profile in the POMs for the POLICY Framework base images. This profile is triggered only on builds running on ARM architecture. This new profile builds the onap-java and onap-pthon base images on ARM architeclture locally when the build is run on a machine with ARM architecture. - The onap-java base image docker file does not build on ARM architecture becasue its base image (an Alpine version with Java 11 preinstalled). Therefore, for this base image, a Dockerfile is introduced that uses the Alpine base image and adds Java 11. - The onap-python image docker file does build on ARM architecture so the repo is simply checked out and built on ARM architecture Once these ARM based ONAP base images are available locally, the rest of the docker images in the Policy Framework build fine on a machine with ARM architecture, and can be used to run docker-compose compositions such as CSITs. Issue-ID: POLICY-4287 Change-Id: I1938e232f6457f7ad1c18a0952c65fdee04d169b Signed-off-by: liamfallon <liam.fallon@est.tech>
-rw-r--r--policy-jdk/alpine/pom.xml104
-rw-r--r--policy-jdk/alpine/src/main/docker/Dockerfile5
-rw-r--r--policy-jre/alpine/pom.xml73
-rw-r--r--policy-jre/alpine/src/main/docker/Dockerfile5
4 files changed, 169 insertions, 18 deletions
diff --git a/policy-jdk/alpine/pom.xml b/policy-jdk/alpine/pom.xml
index d5f1e3cd..c8e10775 100644
--- a/policy-jdk/alpine/pom.xml
+++ b/policy-jdk/alpine/pom.xml
@@ -20,8 +20,7 @@
============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">
+<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>
@@ -38,8 +37,95 @@
<properties>
<docker.jdk.imagename>onap/policy-jdk-alpine</docker.jdk.imagename>
+ <integration.python.name>onap/integration-python</integration.python.name>
+ <integration.python.version>10.1.0</integration.python.version>
</properties>
+ <profiles>
+ <profile>
+ <!-- This profile is activated on Apple M1 architecture to generate the ONAP base Java image locally -->
+ <id>baseImage</id>
+ <activation>
+ <os>
+ <arch>aarch64</arch>
+ </os>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-scm-plugin</artifactId>
+ <version>1.13.0</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>3.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-gitexe</artifactId>
+ <version>1.13.0</version>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <connectionType>connection</connectionType>
+ <checkoutDirectory>src/main/resources/meta</checkoutDirectory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>checkout-onap-python</id>
+ <phase>validate</phase>
+ <configuration>
+ <connectionUrl>scm:git:https://gerrit.onap.org/r/integration/docker/onap-python</connectionUrl>
+ <checkoutDirectory>${project.build.directory}/onap-python</checkoutDirectory>
+ </configuration>
+ <goals>
+ <goal>checkout</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+
+ <executions>
+ <execution>
+ <id>generate-python-image</id>
+ <phase>initialize</phase>
+ <configuration>
+ <verbose>true</verbose>
+ <apiVersion>1.23</apiVersion>
+ <pullRegistry>${docker.pull.registry}</pullRegistry>
+ <pushRegistry>${docker.push.registry}</pushRegistry>
+ <images>
+ <image>
+ <name>${integration.python.name}</name>
+ <build>
+ <cleanup>try</cleanup>
+ <contextDir>${project.build.directory}/onap-python</contextDir>
+ <dockerFile>Dockerfile</dockerFile>
+ <tags>
+ <tag>${integration.python.version}</tag>
+ <tag>${integration.python.version}-${maven.build.timestamp}</tag>
+ <tag>${project.docker.latest.minmax.tag.version}</tag>
+ </tags>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
@@ -83,6 +169,10 @@
<tag>${project.version}-${maven.build.timestamp}</tag>
<tag>${project.docker.latest.minmax.tag.version}</tag>
</tags>
+ <args>
+ <INTEGRATION_PYTHON_NAME>${integration.python.name}</INTEGRATION_PYTHON_NAME>
+ <INTEGRATION_PYTHON_VERSION>${integration.python.version}</INTEGRATION_PYTHON_VERSION>
+ </args>
</build>
</image>
</images>
@@ -91,7 +181,7 @@
<executions>
<execution>
<id>clean-images</id>
- <phase>pre-clean</phase>
+ <phase>prepare-jdk-package</phase>
<goals>
<goal>remove</goal>
</goals>
@@ -101,15 +191,15 @@
</execution>
<execution>
- <id>generate-images</id>
- <phase>generate-sources</phase>
+ <id>generate-jdk-images</id>
+ <phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
- <id>push-images</id>
+ <id>push-jdk-images</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
@@ -137,4 +227,4 @@
</plugin>
</plugins>
</build>
-</project>
+</project> \ No newline at end of file
diff --git a/policy-jdk/alpine/src/main/docker/Dockerfile b/policy-jdk/alpine/src/main/docker/Dockerfile
index c6c492b9..a8f84c0c 100644
--- a/policy-jdk/alpine/src/main/docker/Dockerfile
+++ b/policy-jdk/alpine/src/main/docker/Dockerfile
@@ -23,7 +23,10 @@
# $JAVA_HOME is set to /usr/lib/jvm/java-11-openjdk
# more details at https://hub.docker.com/_/openjdk
-FROM onap/integration-python:10.1.0
+ARG INTEGRATION_PYTHON_NAME=${INTEGRATION_PYTHON_NAME}
+ARG INTEGRATION_PYTHON_VERSION=${INTEGRATION_PYTHON_VERSION}
+
+FROM ${INTEGRATION_PYTHON_NAME}:${INTEGRATION_PYTHON_VERSION}
LABEL maintainer="Policy Team"
LABEL org.opencontainers.image.title="Policy JDK Alpine"
diff --git a/policy-jre/alpine/pom.xml b/policy-jre/alpine/pom.xml
index fb24df6a..197fb19a 100644
--- a/policy-jre/alpine/pom.xml
+++ b/policy-jre/alpine/pom.xml
@@ -20,8 +20,7 @@
============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">
+<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>
@@ -38,8 +37,60 @@
<properties>
<docker.jre.imagename>onap/policy-jre-alpine</docker.jre.imagename>
+ <integration.java.name>onap/integration-java11</integration.java.name>
+ <integration.java.version>9.0.0</integration.java.version>
</properties>
+ <profiles>
+ <profile>
+ <!-- This profile is activated on Apple M1 architecture to generate the ONAP base images locally -->
+ <id>baseImage</id>
+ <activation>
+ <os>
+ <arch>aarch64</arch>
+ </os>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+
+ <executions>
+ <execution>
+ <id>generate-base-image</id>
+ <phase>initialize</phase>
+ <configuration>
+ <verbose>true</verbose>
+ <apiVersion>1.23</apiVersion>
+ <pullRegistry>${docker.pull.registry}</pullRegistry>
+ <pushRegistry>${docker.push.registry}</pushRegistry>
+ <images>
+ <image>
+ <name>${integration.java.name}</name>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFile>BareAlpine.Dockerfile</dockerFile>
+ <tags>
+ <tag>${integration.java.version}</tag>
+ <tag>${integration.java.version}-${maven.build.timestamp}</tag>
+ <tag>${project.docker.latest.minmax.tag.version}</tag>
+ </tags>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
@@ -49,7 +100,7 @@
<version>2.1.1</version>
<executions>
<execution>
- <phase>validate</phase>
+ <phase>prepare-package</phase>
<goals>
<goal>execute</goal>
</goals>
@@ -83,6 +134,10 @@
<tag>${project.version}-${maven.build.timestamp}</tag>
<tag>${project.docker.latest.minmax.tag.version}</tag>
</tags>
+ <args>
+ <INTEGRATION_JAVA_NAME>${integration.java.name}</INTEGRATION_JAVA_NAME>
+ <INTEGRATION_JAVA_VERSION>${integration.java.version}</INTEGRATION_JAVA_VERSION>
+ </args>
</build>
</image>
</images>
@@ -90,8 +145,8 @@
<executions>
<execution>
- <id>clean-images</id>
- <phase>pre-clean</phase>
+ <id>clean-jre-image</id>
+ <phase>prepare-package</phase>
<goals>
<goal>remove</goal>
</goals>
@@ -101,15 +156,15 @@
</execution>
<execution>
- <id>generate-images</id>
- <phase>generate-sources</phase>
+ <id>generate-jre-image</id>
+ <phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
- <id>push-images</id>
+ <id>push-jre-image</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
@@ -137,4 +192,4 @@
</plugin>
</plugins>
</build>
-</project>
+</project> \ No newline at end of file
diff --git a/policy-jre/alpine/src/main/docker/Dockerfile b/policy-jre/alpine/src/main/docker/Dockerfile
index 0d28b226..d4fed90c 100644
--- a/policy-jre/alpine/src/main/docker/Dockerfile
+++ b/policy-jre/alpine/src/main/docker/Dockerfile
@@ -23,7 +23,10 @@
# $JAVA_HOME is set to /usr/lib/jvm/java-11-openjdk
# more details at https://hub.docker.com/_/openjdk
-FROM onap/integration-java11:9.0.0
+ARG INTEGRATION_JAVA_NAME=${INTEGRATION_JAVA_NAME}
+ARG INTEGRATION_JAVA_VERSION=${INTEGRATION_JAVA_VERSION}
+
+FROM ${INTEGRATION_JAVA_NAME}:${INTEGRATION_JAVA_VERSION}
LABEL maintainer="Policy Team"
LABEL org.opencontainers.image.title="Policy JRE Alpine"