Update tools/newtag.sh to work from Jenkins 31/15431/1
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Mon, 29 Sep 2025 11:16:25 +0000 (13:16 +0200)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Tue, 30 Sep 2025 07:55:03 +0000 (09:55 +0200)
Change-Id: Ib3b6ba9e5f922651e5fa2354283077800ac9feb3
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
tools/newtag.sh

index 7a19998..50f9df9 100755 (executable)
 #   limitations under the License.
 #
 
-if [ $# -ne 5 ]; then
-    echo "Usage $0 <repo> <branch> <tag> <user> <release_name>"
-    echo "Example: $0 all master v4.0.2 garciadeblas FOUR"
-    echo "Example: $0 devops v5.0 v5.0.3 marchettim FIVE"
+if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then
+    echo "Usage $0 <TAG> <GIT_USER> [<GIT_PASSWORD>]"
+    echo "Example: $0 v18.0.1 garciadeblas"
+    echo "When <GIT_PASSWORD> is provided, it will be used for git https authentication. Otherwise, ssh authentication will be used."
     exit 1
 fi
 
-BRANCH="$2"
-TAG="$3"
-USER="$4"
-RELEASE_NAME="$5"
+TAG="$1"
+GIT_USER="$2"
+GIT_PASSWORD="${3:-}"
+
+BRANCH_NAME="v$(echo $TAG | grep -oE '[0-9]+\.[0-9]+')"
+
+declare -A branch_release_map=(
+    ["v14.0"]="FOURTEEN"
+    ["v15.0"]="FIFTEEN"
+    ["v16.0"]="SIXTEEN"
+    ["v17.0"]="SEVENTEEN"
+    ["v18.0"]="EIGHTEEN"
+    ["v19.0"]="NINETEEN"
+    ["v20.0"]="TWENTY"
+    ["v21.0"]="TWENTYONE"
+    ["v22.0"]="TWENTYTWO"
+    ["v23.0"]="TWENTYTHREE"
+)
+
+RELEASE_NAME="${branch_release_map[$BRANCH_NAME]}"
+if [ -z "$RELEASE_NAME" ]; then
+    echo "Unknown branch name: $BRANCH_NAME"
+    exit 1
+fi
 tag_header="OSM Release $RELEASE_NAME:"
 tag_message="$tag_header version $TAG"
 
-modules="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
-list=""
-for i in $modules; do
-    if [ "$1" == "$i" -o "$1" == "all" ]; then
-        list="$1"
-        break
-    fi
-done
+declare -A branch_module_map=(
+    ["v14.0"]="common devops IM LCM MON N2VC NBI NG-UI NG-SA osmclient RO PLA POL SOL003 SOL005 tests"
+    ["v15.0"]="common devops IM LCM MON N2VC NBI NG-UI NG-SA osmclient RO PLA POL SOL003 SOL005 tests"
+    ["v16.0"]="common devops IM LCM MON N2VC NBI NG-UI NG-SA osmclient RO PLA POL SOL003 SOL005 tests"
+    ["v17.0"]="common devops IM LCM MON N2VC NBI NG-UI NG-SA osmclient RO PLA POL SOL003 SOL005 tests"
+    ["v18.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+    ["v19.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+    ["v20.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+    ["v21.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+    ["v22.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+    ["v23.0"]="common devops IM LCM MON NBI NG-UI NG-SA osmclient RO SOL003 SOL005 tests"
+)
+MODULE_LIST="${branch_module_map[$BRANCH_NAME]}"
+if [ -z "$MODULE_LIST" ]; then
+    echo "Unknown branch name: $BRANCH_NAME"
+    exit 1
+fi
 
-[ "$1" == "all" ] && list=$modules
 
-if [ -z "$list" ]; then
-    echo "Repo must be one of these: $modules all"
-    exit 1
+BASE_FOLDER=$(mktemp -d --tmpdir change-chart-version.XXXXXX)
+pushd $BASE_FOLDER
+
+if [ -n "$GIT_PASSWORD" ]; then
+    REPO_BASE_URL="https://${GIT_USER}@osm.etsi.org/gerrit/a/osm"
+    # Follow recommendation for user auth with git using a script git-creds.sh
+    cat << "EOF" > "${HOME}/git-creds.sh"
+#!/bin/sh
+if echo "$1" | grep -q '^Password'; then
+  echo "${GIT_PASSWORD}"
+else
+  echo "${GIT_USER}"
+fi
+exit 0
+EOF
+    chmod +x "${HOME}/git-creds.sh"
+else
+    REPO_BASE_URL="ssh://${GIT_USER}@osm.etsi.org:29418/osm"
 fi
 
-for i in $list; do
-    echo $i
-    if [ ! -d $i ]; then
-        git clone ssh://$USER@osm.etsi.org:29418/osm/$i
+for i in ${MODULE_LIST}; do
+    echo "Cloning $i repo"
+    REPO_URL="${REPO_BASE_URL}/${i}"
+    if [ -n "$GIT_PASSWORD" ]; then
+        echo "Using https authentication"
+        GIT_USERNAME="${GIT_USER}" GIT_ASKPASS=~/git-creds.sh git clone "${REPO_URL}"
+    else
+        echo "Using ssh authentication"
+        git clone "${REPO_URL}"
     fi
-    git -C $i checkout $BRANCH || ! echo "$BRANCH was not found in $i repo" || continue
+    git -C $i checkout $BRANCH_NAME || ! echo "$BRANCH_NAME was not found in $i repo" || continue
     git -C $i pull --rebase
-    echo "Creating new tag $TAG in repo $i associated to branch $BRANCH"
+    echo "Creating new tag $TAG in repo $i associated to branch $BRANCH_NAME"
     git -C $i tag -a $TAG -m"$tag_message"
+    echo "Pushing changes to $i repo"
     git -C $i push origin $TAG --follow-tags
     sleep 2
 done
 
+popd
+
 exit 0