From c41921a689556987479d534c51d020cdab82812b Mon Sep 17 00:00:00 2001 From: garciadeblas Date: Mon, 29 Sep 2025 13:16:25 +0200 Subject: [PATCH] Update tools/newtag.sh to work from Jenkins Change-Id: Ib3b6ba9e5f922651e5fa2354283077800ac9feb3 Signed-off-by: garciadeblas --- tools/newtag.sh | 103 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 77 insertions(+), 26 deletions(-) diff --git a/tools/newtag.sh b/tools/newtag.sh index 7a199981..50f9df9d 100755 --- a/tools/newtag.sh +++ b/tools/newtag.sh @@ -15,47 +15,98 @@ # limitations under the License. # -if [ $# -ne 5 ]; then - echo "Usage $0 " - 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 []" + echo "Example: $0 v18.0.1 garciadeblas" + echo "When 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 -- 2.25.1