Feat!: Re-factor lf-activate-venv() to re-use venv
[releng/global-jjb.git] / shell / deploy-maven-file.sh
index 8b6fad8..a057fe1 100644 (file)
@@ -1,5 +1,5 @@
-#!/bin/bash
-# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+#!/bin/bash -l
+# SPDX-License-Identifier: EPL-1.0
 ##############################################################################
 # Copyright (c) 2017 The Linux Foundation and others.
 #
 # This script publishes packages (rpms/debs) or any file to Nexus hosted
 # maven2 repository.
 #
-# $NEXUS_URL          :  Jenkins global variable should be defined.
+# $MAVEN_REPO_URL     :  Provided by a job parameter.
+#                        The calling job can set $NEXUS_URL path or local
+#                        directory to stage files. ex:
+#                         -Durl="${NEXUS_URL}/content/repositories/$REPO_ID"
+#                         -Durl="file://$WORKSPACE/m2repo"
 # $REPO_ID            :  Provided by a job parameter.
+#                        A repository ID represents the repository.
 # $GROUP_ID           :  Provided by a job parameter.
-# $UPLOAD_FILES_PATH  :  Provided by a job parameter.
+#                        A group ID represents a nexus group.
+# $UPLOAD_FILES_PATH   :  Provided by a job parameter.
+#                        The directory contains one or more artifacts.
+
 echo "---> deploy-maven-file.sh"
+
+# DO NOT enable -u because $MAVEN_PARAMS and $MAVEN_OPTIONS could be unbound.
 # Ensure we fail the job if any steps fail.
-set -eu -o pipefail
+set -e -o pipefail
+set +u
+
+# shellcheck disable=SC1090
+. ~/lf-env.sh
+
+lf-activate-venv --python python3 lftools
+
+export MAVEN_OPTIONS
+export MAVEN_PARAMS
 
 DEPLOY_LOG="$WORKSPACE/archives/deploy-maven-file.log"
 mkdir -p "$WORKSPACE/archives"
 
-NEXUS_REPO_URL="${NEXUS_URL}/content/repositories/$REPO_ID"
-
-while IFS="" read -r file
-do
-    lftools deploy maven-file "$NEXUS_REPO_URL" \
-                              "$REPO_ID" \
-                              "$file" \
-                              -b "$MVN" \
-                              -g "$GROUP_ID" | tee "$DEPLOY_LOG"
-done < <(find "$UPLOAD_FILES_PATH" -type f -name "*")
+while IFS="" read -r file; do
+    file_size=$(stat --printf="%s" "${file}")
+    echo "Deploy ${file##*/} with ${file_size} bytes."
+    lftools deploy maven-file "$MAVEN_REPO_URL" \
+                                "$REPO_ID" \
+                                "$file" \
+                                -b "$MVN" \
+                                -g "$GROUP_ID" \
+                                -p "$MAVEN_OPTIONS $MAVEN_PARAMS" \
+                                |& tee "$DEPLOY_LOG"
+done < <(find "$UPLOAD_FILES_PATH" -xtype f -name "*")