diff options
author | liamfallon <liam.fallon@est.tech> | 2022-07-31 19:12:28 +0100 |
---|---|---|
committer | liamfallon <liam.fallon@est.tech> | 2022-08-22 17:22:12 +0100 |
commit | 18c442ae336dea9945512245ec49b61978a893d5 (patch) | |
tree | ae91f5b82fc49885d952f5f759f88ed2593db388 | |
parent | 0f2099e2f0527ffc5c19637f04a5ad8dee75047e (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.xml | 104 | ||||
-rw-r--r-- | policy-jdk/alpine/src/main/docker/Dockerfile | 5 | ||||
-rw-r--r-- | policy-jre/alpine/pom.xml | 73 | ||||
-rw-r--r-- | policy-jre/alpine/src/main/docker/Dockerfile | 5 |
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" |