Parameterize mvn repo urls and proxy settings
This allows the users to build the docker images for drools-pdp
and drools-application using their own CI pipelines if needed.
Issue-ID: POLICY-2330
Signed-off-by: Rashmi Pujar <rashmi.pujar@bell.ca>
Change-Id: I9ea0161b45d504be4e65a21c95e48dee4a78de3a
diff --git a/packages/base/src/files/etc/m2/settings.xml b/packages/base/src/files/etc/m2/settings.xml
index 21212e0..ed71e02 100644
--- a/packages/base/src/files/etc/m2/settings.xml
+++ b/packages/base/src/files/etc/m2/settings.xml
@@ -4,11 +4,12 @@
Base Package
================================================================================
Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ Modifications Copyright (C) 2020 Bell Canada.
================================================================================
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
@@ -19,18 +20,13 @@
============LICENSE_END=========================================================
-->
-
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-
<offline>false</offline>
-
<profiles>
-
<profile>
<id>policy-local</id>
-
<repositories>
<repository>
<id>file-repository</id>
@@ -45,12 +41,9 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
<id>policy-releases</id>
-
<repositories>
<repository>
<id>${env.RELEASE_REPOSITORY_ID}</id>
@@ -64,12 +57,9 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
<id>policy-snapshots</id>
-
<repositories>
<repository>
<id>${env.SNAPSHOT_REPOSITORY_ID}</id>
@@ -83,17 +73,14 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
- <id>onap-releases</id>
-
+ <id>releases</id>
<repositories>
<repository>
- <id>onap-releases</id>
- <name>onap-releases</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
+ <id>releases</id>
+ <name>releases</name>
+ <url>${env.MVN_RELEASE_REPO_URL}</url>
<releases>
<enabled>true</enabled>
</releases>
@@ -102,18 +89,14 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
-
- <id>onap-snapshots</id>
-
+ <id>snapshots</id>
<repositories>
<repository>
- <id>onap-snapshots</id>
- <name>onap-snapshots</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+ <id>snapshots</id>
+ <name>snapshots</name>
+ <url>${env.MVN_SNAPSHOT_REPO_URL}</url>
<releases>
<enabled>false</enabled>
</releases>
@@ -122,19 +105,15 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
</profiles>
-
<activeProfiles>
<activeProfile>policy-local</activeProfile>
<activeProfile>policy-releases</activeProfile>
<activeProfile>policy-snapshots</activeProfile>
- <activeProfile>onap-releases</activeProfile>
- <activeProfile>onap-snapshots</activeProfile>
+ <activeProfile>releases</activeProfile>
+ <activeProfile>snapshots</activeProfile>
</activeProfiles>
-
<servers>
<server>
<id>${env.SNAPSHOT_REPOSITORY_ID}</id>
@@ -147,5 +126,4 @@
<password>${env.REPOSITORY_PASSWORD}</password>
</server>
</servers>
-
</settings>
diff --git a/packages/base/src/files/etc/m2/standalone-settings.xml b/packages/base/src/files/etc/m2/standalone-settings.xml
index e19180e..8dff1a6 100644
--- a/packages/base/src/files/etc/m2/standalone-settings.xml
+++ b/packages/base/src/files/etc/m2/standalone-settings.xml
@@ -4,6 +4,7 @@
Base Package
================================================================================
Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ Modifications Copyright (C) 2020 Bell Canada.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -19,18 +20,13 @@
============LICENSE_END=========================================================
-->
-
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
-
<offline>false</offline>
-
<profiles>
-
<profile>
<id>policy-local</id>
-
<repositories>
<repository>
<id>file-repository</id>
@@ -45,17 +41,14 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
- <id>onap-releases</id>
-
+ <id>releases</id>
<repositories>
<repository>
- <id>onap-releases</id>
- <name>onap-releases</name>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
+ <id>releases</id>
+ <name>releases</name>
+ <url>${env.MVN_RELEASE_REPO_URL}</url>
<releases>
<enabled>true</enabled>
</releases>
@@ -64,17 +57,14 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
<profile>
- <id>onap-snapshots</id>
-
+ <id>snapshots</id>
<repositories>
<repository>
- <id>onap-snapshots</id>
- <name>onap-snapshots</name>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+ <id>snapshots</id>
+ <name>snapshots</name>
+ <url>${env.MVN_SNAPSHOT_REPO_URL}</url>
<releases>
<enabled>false</enabled>
</releases>
@@ -83,15 +73,11 @@
</snapshots>
</repository>
</repositories>
-
</profile>
-
</profiles>
-
<activeProfiles>
<activeProfile>policy-local</activeProfile>
- <activeProfile>onap-releases</activeProfile>
- <activeProfile>onap-snapshots</activeProfile>
+ <activeProfile>releases</activeProfile>
+ <activeProfile>snapshots</activeProfile>
</activeProfiles>
-
</settings>
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml
index 9a5979a..d9e2133 100644
--- a/packages/docker/pom.xml
+++ b/packages/docker/pom.xml
@@ -3,7 +3,7 @@
ONAP Policy Engine - Docker files
================================================================================
Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
- Modifications Copyright (C) 2019 Bell Canada.
+ Modifications Copyright (C) 2019-2020 Bell Canada.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -45,6 +45,8 @@
<docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
<maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
<docker.buildArg.BUILD_VERSION_DROOLS>${project.version}</docker.buildArg.BUILD_VERSION_DROOLS>
+ <docker.buildArg.MVN_SNAPSHOT_REPO_URL>${nexusproxy}/${snapshots.path}</docker.buildArg.MVN_SNAPSHOT_REPO_URL>
+ <docker.buildArg.MVN_RELEASE_REPO_URL>${nexusproxy}/${releases.path}</docker.buildArg.MVN_RELEASE_REPO_URL>
</properties>
<build>
diff --git a/packages/docker/src/main/docker/Dockerfile b/packages/docker/src/main/docker/Dockerfile
index 935ea64..4c9cc9f 100644
--- a/packages/docker/src/main/docker/Dockerfile
+++ b/packages/docker/src/main/docker/Dockerfile
@@ -5,6 +5,9 @@
ARG BUILD_VERSION_DROOLS=${BUILD_VERSION_DROOLS}
ARG POLICY_LOGS=/var/log/onap/policy/pdpd
ARG POLICY_INSTALL=/tmp/policy-install
+ARG MVN_SNAPSHOT_REPO_URL
+ARG MVN_RELEASE_REPO_URL
+ARG http_proxy
ENV BUILD_VERSION_DROOLS $BUILD_VERSION_DROOLS
ENV POLICY_INSTALL $POLICY_INSTALL
@@ -13,6 +16,9 @@
ENV POLICY_CONFIG $POLICY_HOME/config
ENV POLICY_LOGBACK $POLICY_CONFIG/logback.xml
ENV POLICY_DOCKER true
+ENV MVN_SNAPSHOT_REPO_URL $MVN_SNAPSHOT_REPO_URL
+ENV MVN_RELEASE_REPO_URL $MVN_RELEASE_REPO_URL
+ENV http_proxy $http_proxy
RUN apt-get install -y \
mariadb-client \
diff --git a/packages/install/src/files/base.conf b/packages/install/src/files/base.conf
index 6d80fb5..865a9d1 100644
--- a/packages/install/src/files/base.conf
+++ b/packages/install/src/files/base.conf
@@ -3,6 +3,7 @@
# ONAP POLICY
# ================================================================================
# Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Modifications Copyright (C) 2020 Bell Canada.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -22,7 +23,7 @@
JVM_OPTIONS=-server -Xms512m -Xmx1024m
-# SYSTEM software configuration
+# SYSTEM software configuration
POLICY_HOME=/opt/app/policy
POLICY_LOGS=/opt/app/policy/logs
@@ -30,6 +31,14 @@
KEYSTORE_PASSWD=Pol1cy_0nap
TRUSTSTORE_PASSWD=Pol1cy_0nap
+# System proxy settings
+# Empty by default, http proxy can be overridden during build time.
+# System property settings will always override the project
+# property supplied during build time.
+
+#http_proxy=
+#https_proxy=
+
# Telemetry credentials
TELEMETRY_PORT=9696
@@ -37,7 +46,7 @@
TELEMETRY_USER=
TELEMETRY_PASSWORD=
-# nexus repository
+# nexus repository for policy artifacts
SNAPSHOT_REPOSITORY_ID=
SNAPSHOT_REPOSITORY_URL=
@@ -47,6 +56,14 @@
REPOSITORY_PASSWORD=
REPOSITORY_OFFLINE=
+# nexus repository for all other artifacts.
+# By default the repo URLs point to ONAP nexus
+# repositories. These default build settings
+# can be overridden during build time.
+
+#MVN_SNAPSHOT_REPO_URL=https://nexus.onap.org/content/repositories/snapshots/
+#MVN_RELEASE_REPO_URL=https://nexus.onap.org/content/repositories/releases/
+
# Relational (SQL) DB access
SQL_HOST=
diff --git a/policy-management/src/main/server-gen/bin/deploy-artifact b/policy-management/src/main/server-gen/bin/deploy-artifact
index 2fc101b..dab945a 100644
--- a/policy-management/src/main/server-gen/bin/deploy-artifact
+++ b/policy-management/src/main/server-gen/bin/deploy-artifact
@@ -5,6 +5,7 @@
# ONAP
# ================================================================================
# Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Modifications Copyright (C) 2020 Bell Canada.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -205,6 +206,40 @@
}
##############################################################################
+# Usage: setMavenProxyArgs
+#
+# This function performs parsing of http proxy environment variable if provided,
+# extracting the attributes such as proxy host, port, username and password.
+# These proxy attributes are set into the global variable for maven proxy
+# settings to be used as build arguments with maven commands.
+##############################################################################
+
+function setMavenProxyArgs
+{
+ if [[ ${DEBUG} == y ]]; then
+ echo "-- ${FUNCNAME[0]} $* --"
+ set -x
+ fi
+
+ if [[ -z ${http_proxy} ]]; then
+ return 0
+ fi
+
+ local proxy_creds=${http_proxy#*//}
+ local proxy=${proxy_creds#*@}
+ local host=${proxy%:*}
+ local port=${proxy#*:}
+ MVN_PROXY_SETTINGS="-DproxyHost=${host} -DproxyPort=${port}"
+
+ if [[ "$proxy_creds" == *"@"* ]]; then
+ local creds=${proxy_creds%%@*}
+ local username=${creds%:*}
+ local password=${creds#*:}
+ MVN_PROXY_SETTINGS+=" -DproxyUsername=${username} -DproxyPassword=${password}"
+ fi
+}
+
+##############################################################################
# Usage: deployJar <jar-file>
#
# This function deploys a JAR file in a repository, as well as
@@ -241,7 +276,7 @@
echo "${file}: deploying jar artifact to repository ${repoId}: ${repoUrl}"
echo "${file}: coordinates ${groupId} ${artifactId} ${version}"
- mvn ${CUSTOM_SETTINGS} deploy:deploy-file \
+ mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} deploy:deploy-file \
-Dfile="${file}" \
-Dversion="${version}" \
-Dpackaging=jar \
@@ -290,7 +325,7 @@
echo "${file}: deploying pom artifact to repository ${repoId}: ${repoUrl}"
echo "${file}: coordinates ${groupId} ${artifactId} ${version}"
- mvn ${CUSTOM_SETTINGS} deploy:deploy-file \
+ mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} deploy:deploy-file \
-Dfile="${file}" \
-Dpackaging=pom \
-DgeneratePom=false \
@@ -362,8 +397,8 @@
return 1
fi
- mvn ${CUSTOM_SETTINGS} org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \
- -Dfile="${file}"
+ mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} \
+ org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -Dfile="${file}"
return $?
}
@@ -387,7 +422,8 @@
return 1
fi
- mvn ${CUSTOM_SETTINGS} org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \
+ mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} \
+ org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \
-Dpackaging=pom \
-Dfile="${file}" \
-DpomFile="${file}"
@@ -462,7 +498,8 @@
echo "${file}: deploying dependencies from repository ${DEPENDENCY_REPO_URL}"
echo "${file}: coordinates ${groupId} ${artifactId} ${version}"
- mvn ${CUSTOM_SETTINGS} org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
+ mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} \
+ org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
-DartifactId="${artifactId}" \
-DgroupId="${groupId}" \
-Dversion="${version}" \
@@ -492,6 +529,7 @@
unset DEPENDENCY_REPO_URL
unset SETTINGS_FILE
unset CUSTOM_SETTINGS
+unset MVN_PROXY_SETTINGS
# process input
@@ -526,6 +564,9 @@
CUSTOM_SETTINGS="--settings=${SETTINGS_FILE}"
fi
+# Set proxy attributes into MVN_PROXY_SETTINGS variable
+setMavenProxyArgs
+
# retval has the count of failed operations
retval=0