summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xdocker_push_manifest.sh59
-rw-r--r--policy-base/alpine/pom.xml17
-rw-r--r--policy-base/pom.xml7
-rw-r--r--policy-common/alpine/pom.xml17
-rw-r--r--policy-common/alpine/src/main/docker/Dockerfile4
-rw-r--r--policy-common/pom.xml7
-rw-r--r--pom.xml4
-rw-r--r--version.properties4
9 files changed, 94 insertions, 26 deletions
diff --git a/.gitignore b/.gitignore
index 1c47ce99..a5c40ebc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
target
install.log*
policy-drools/install.log*
+*.sw?
diff --git a/docker_push_manifest.sh b/docker_push_manifest.sh
new file mode 100755
index 00000000..7e2ba852
--- /dev/null
+++ b/docker_push_manifest.sh
@@ -0,0 +1,59 @@
+#!/bin/bash -ex
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 ENEA AB. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+# This script creates the multi-arch manifest for the docker images
+
+# shellcheck source=/dev/null
+source version.properties
+IMAGES="onap/policy-base-alpine onap/policy-common-alpine"
+ARCHES="amd64 arm64"
+TIMESTAMP=$(date -u +"%Y%m%d%H%M%S")
+MT_RELEASE='v0.9.0'
+
+# Download the manifest tool based on the host's architecture
+HOST_ARCH='amd64'
+if [ "$(uname -m)" == 'aarch64' ]; then
+ HOST_ARCH='arm64'
+fi
+wget https://github.com/estesp/manifest-tool/releases/download/${MT_RELEASE}/manifest-tool-linux-${HOST_ARCH} -O ./manifest-tool
+chmod u+x manifest-tool
+
+# Tag the images and push the manifest (do not fail if some prerequisite tags are not yet present)
+set +e
+for image in ${IMAGES}; do
+ # always (re)create both SNAPSHOT and STAGING tags to make sure everything is up to date
+ TAGS="latest ${release_version} ${release_version}-SNAPSHOT ${release_version}-SNAPSHOT-latest ${release_version}-STAGING-latest"
+ for tag in ${TAGS}; do
+ ./manifest-tool push from-args \
+ --ignore-missing \
+ --platforms "linux/${ARCHES// /,linux/}" \
+ --template "${image}:${tag}-ARCH" \
+ --target "${image}:${tag}"
+ done
+
+ # Create timestamped multiarch tag; if the script is ran from the merge
+ # job then add the SNAPSHOT suffix
+ [[ "${PARENT_JOB_NAME}" =~ merge ]] && snapshot_suffix="SNAPSHOT-"
+
+ ./manifest-tool push from-args \
+ --ignore-missing \
+ --platforms "linux/${ARCHES// /,linux/}" \
+ --template "${image}:${release_version}-${snapshot_suffix:-}ARCH" \
+ --target "${image}:${release_version}-${snapshot_suffix:-}${TIMESTAMP}"
+done
diff --git a/policy-base/alpine/pom.xml b/policy-base/alpine/pom.xml
index 028cf466..d58a7772 100644
--- a/policy-base/alpine/pom.xml
+++ b/policy-base/alpine/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.onap.policy.docker</groupId>
<artifactId>policy-base</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
@@ -43,7 +43,7 @@
<version>1.0</version>
<executions>
<execution>
- <phase>validate</phase>
+ <phase>pre-clean</phase>
<goals>
<goal>execute</goal>
</goals>
@@ -62,6 +62,12 @@
}
println 'New tag for docker: ' + project.properties['project.docker.latesttag.version'];
+ if ( "aarch64".equals(System.properties['os.arch']) ) {
+ project.properties['project.docker.arch'] = "arm64";
+ } else {
+ project.properties['project.docker.arch'] = System.properties['os.arch'];
+ }
+ println 'Using arch for docker: ' + project.properties['project.docker.arch'];
</source>
</configuration>
</execution>
@@ -79,14 +85,13 @@
<images>
<image>
- <name>onap/policy-base-alpine</name>
+ <name>onap/policy-base-alpine:latest-${project.docker.arch}</name>
<build>
<cleanup>try</cleanup>
<dockerFile>Dockerfile</dockerFile>
<tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
+ <tag>${project.version}-${project.docker.arch}</tag>
+ <tag>${project.docker.latesttag.version}-${project.docker.arch}</tag>
</tags>
</build>
</image>
diff --git a/policy-base/pom.xml b/policy-base/pom.xml
index bae9e63c..ac4eaca3 100644
--- a/policy-base/pom.xml
+++ b/policy-base/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onap.policy.docker</groupId>
<artifactId>docker</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>policy-base</artifactId>
@@ -37,9 +37,8 @@
<docker.skip>false</docker.skip>
<docker.skip.build>false</docker.skip.build>
<docker.skip.push>false</docker.skip.push>
- <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
- <docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
- <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
+ <docker.pull.registry>docker.io</docker.pull.registry>
+ <docker.push.registry>docker.io</docker.push.registry>
</properties>
<profiles>
diff --git a/policy-common/alpine/pom.xml b/policy-common/alpine/pom.xml
index bc4211b7..b36221c4 100644
--- a/policy-common/alpine/pom.xml
+++ b/policy-common/alpine/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.onap.policy.docker</groupId>
<artifactId>policy-common</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
@@ -43,7 +43,7 @@
<version>1.0</version>
<executions>
<execution>
- <phase>validate</phase>
+ <phase>pre-clean</phase>
<goals>
<goal>execute</goal>
</goals>
@@ -62,6 +62,12 @@
}
println 'New tag for docker: ' + project.properties['project.docker.latesttag.version'];
+ if ( "aarch64".equals(System.properties['os.arch']) ) {
+ project.properties['project.docker.arch'] = "arm64";
+ } else {
+ project.properties['project.docker.arch'] = System.properties['os.arch'];
+ }
+ println 'Using arch for docker: ' + project.properties['project.docker.arch'];
</source>
</configuration>
</execution>
@@ -79,14 +85,13 @@
<pushRegistry>${docker.push.registry}</pushRegistry>
<images>
<image>
- <name>onap/policy-common-alpine</name>
+ <name>onap/policy-common-alpine:latest-${project.docker.arch}</name>
<build>
<cleanup>try</cleanup>
<dockerFile>Dockerfile</dockerFile>
<tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
+ <tag>${project.version}-${project.docker.arch}</tag>
+ <tag>${project.docker.latesttag.version}-${project.docker.arch}</tag>
</tags>
<args>
<BUILD_VERSION>${docker.build.version}</BUILD_VERSION>
diff --git a/policy-common/alpine/src/main/docker/Dockerfile b/policy-common/alpine/src/main/docker/Dockerfile
index 96f4df53..ba8d2d17 100644
--- a/policy-common/alpine/src/main/docker/Dockerfile
+++ b/policy-common/alpine/src/main/docker/Dockerfile
@@ -17,9 +17,9 @@
# ============LICENSE_END=========================================================
#
-# Docker file to build an image that contains commom packages for Policy components
+# Docker file to build an image that contains common packages for Policy components
#
-FROM onap/policy-base-alpine
+FROM onap/policy-base-alpine:latest-${project.docker.arch}
LABEL maintainer="Policy Team"
diff --git a/policy-common/pom.xml b/policy-common/pom.xml
index 433fd00f..d63bf4e5 100644
--- a/policy-common/pom.xml
+++ b/policy-common/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onap.policy.docker</groupId>
<artifactId>docker</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>policy-common</artifactId>
@@ -37,9 +37,8 @@
<docker.skip>false</docker.skip>
<docker.skip.build>false</docker.skip.build>
<docker.skip.push>false</docker.skip.push>
- <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
- <docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
- <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
+ <docker.pull.registry>docker.io</docker.pull.registry>
+ <docker.push.registry>docker.io</docker.push.registry>
<docker.build.version>${project.version}</docker.build.version>
</properties>
diff --git a/pom.xml b/pom.xml
index 1b55d6d6..a1e47bf6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,13 +23,13 @@
<parent>
<groupId>org.onap.policy.parent</groupId>
<artifactId>integration</artifactId>
- <version>3.0.1-SNAPSHOT</version>
+ <version>3.0.1</version>
<relativePath />
</parent>
<groupId>org.onap.policy.docker</groupId>
<artifactId>docker</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Policy Docker images</name>
diff --git a/version.properties b/version.properties
index 99af3426..a3ac0d9c 100644
--- a/version.properties
+++ b/version.properties
@@ -2,8 +2,8 @@
# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )
# because they are used in Jenkins, whose plug-in doesn't support
-major=1
-minor=5
+major=2
+minor=0
patch=0
base_version=${major}.${minor}.${patch}