Fix package publishing script to handle both deb and rpm in one command
authorPeter Amstutz <peter.amstutz@curii.com>
Thu, 11 Apr 2024 13:35:11 +0000 (09:35 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Thu, 11 Apr 2024 13:35:11 +0000 (09:35 -0400)
no issue #

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

jenkins/testing_to_stable_publish_packages.sh
jenkins/upload_packages_testing_to_stable.sh

index 053ac7d6a677ed9306008ecf3f9cb0952dd151a3..835a269006226065c8e744feec02252b79631375 100755 (executable)
@@ -45,58 +45,55 @@ DIST_LIST=$(echo ${distros} | sed s/,/' '/g |tr '[:upper:]' '[:lower:]')
 CENTOS_PACKAGES=$(echo ${packages} | sed 's/\([a-z-]*\):[[:blank:]]*\([0-9.-]*\)/\1*\2*/g; s/,/ /g;')
 DEBIAN_PACKAGES=$(echo ${packages} | sed 's/\([a-z-]*\):[[:blank:]]*\([0-9.-]*\)/\1 (= \2)/g;')
 
-if ( echo ${DIST_LIST} |grep -q -E '(centos|rocky)' ); then
-  for DISTNAME in ${DIST_LIST}; do
-    case ${DISTNAME} in
-      'centos7')
-        DIST_DIR_TEST='7/testing/x86_64'
-        DIST_DIR_PROD='7/os/x86_64'
-       ;;
-      'rocky8')
-        DIST_DIR_TEST='8/testing/x86_64'
-        DIST_DIR_PROD='8/os/x86_64'
-      ;;
-      *)
-        echo "Only centos7 and rocky8 are accepted right now"
-        exit 253
-      ;;
-    esac
-    cd ${RPM_REPO_BASE_DIR}
-    mkdir -p ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}
-    echo "Copying packages ..."
-    for P in ${CENTOS_PACKAGES}; do
-      cp ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_TEST}/${P} ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}/
-      if [ $? -ne 0 ]; then
-        FAILED_PACKAGES="${FAILED_PACKAGES} ${P}"
-      fi
-    done
-    echo "Recreating repo CentOS/${DIST_DIR_PROD} ..."
-    createrepo_c ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}
-  done
-else
-  for DISTNAME in ${DIST_LIST}; do
-    ADDED=()
-    echo "Copying packages ..."
-    OLDIFS=$IFS
-    IFS=$','
-    for P in ${DEBIAN_PACKAGES}; do
-      aptly repo search ${DISTNAME}-testing "${P}"
-      if [ $? -ne 0 ]; then
-        echo "ERROR: unable to find a match for '${P}' in ${DISTNAME}-testing"
-        FAILED_PACKAGES="${FAILED_PACKAGES} ${DISTNAME}-testing:${P}"
-      else
-        aptly repo copy ${DISTNAME}-testing ${DISTNAME} "${P}"
-        if [ $? -ne 0 ]; then
-          echo "ERROR: unable to copy '${P}' from ${DISTNAME}-testing to ${DISTNAME}"
-          FAILED_PACKAGES="${FAILED_PACKAGES} ${DISTNAME}-testing:${P}"
-        fi
-      fi
-    done
-    IFS=$OLDIFS
-    echo "Publishing ${DISTNAME} repository..."
-    aptly publish update ${DISTNAME} filesystem:${DISTNAME}:
-  done
-fi
+for DISTNAME in ${DIST_LIST}; do
+    if ( echo ${DISTNAME} |grep -q -E '(centos|rocky)' ); then
+       case ${DISTNAME} in
+           'centos7')
+               DIST_DIR_TEST='7/testing/x86_64'
+               DIST_DIR_PROD='7/os/x86_64'
+               ;;
+           'rocky8')
+               DIST_DIR_TEST='8/testing/x86_64'
+               DIST_DIR_PROD='8/os/x86_64'
+               ;;
+           *)
+               echo "Only centos7 and rocky8 are accepted right now"
+               exit 253
+               ;;
+       esac
+       cd ${RPM_REPO_BASE_DIR}
+       mkdir -p ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}
+       echo "Copying packages ..."
+       for P in ${CENTOS_PACKAGES}; do
+           cp ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_TEST}/${P} ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}/
+           if [ $? -ne 0 ]; then
+               FAILED_PACKAGES="${FAILED_PACKAGES} ${P}"
+           fi
+       done
+       echo "Recreating repo CentOS/${DIST_DIR_PROD} ..."
+       createrepo_c ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD}
+    else
+       echo "Copying packages ..."
+       OLDIFS=$IFS
+       IFS=$','
+       for P in ${DEBIAN_PACKAGES}; do
+           aptly repo search ${DISTNAME}-testing "${P}"
+           if [ $? -ne 0 ]; then
+               echo "ERROR: unable to find a match for '${P}' in ${DISTNAME}-testing"
+               FAILED_PACKAGES="${FAILED_PACKAGES} ${DISTNAME}-testing:${P}"
+           else
+               aptly repo copy ${DISTNAME}-testing ${DISTNAME} "${P}"
+               if [ $? -ne 0 ]; then
+                   echo "ERROR: unable to copy '${P}' from ${DISTNAME}-testing to ${DISTNAME}"
+                   FAILED_PACKAGES="${FAILED_PACKAGES} ${DISTNAME}-testing:${P}"
+               fi
+           fi
+       done
+       IFS=$OLDIFS
+       echo "Publishing ${DISTNAME} repository..."
+       aptly publish update ${DISTNAME} filesystem:${DISTNAME}:
+    fi
+done
 
 if [ "${FAILED_PACKAGES}" != "" ]; then
   echo "PACKAGES THAT FAILED TO PUBLISH"
index b7cff37c04e35660b2682dee031ef48b42a4f3db..4cf3737f79a4c2409a4910543ed867c6c46d0a62 100755 (executable)
@@ -23,7 +23,7 @@ fi
 if [ -z "${LSB_DISTRIB_CODENAMES}" ]; then
   echo "You must provide a space-separated list of LSB distribution codenames to which you want to publish to, ie."
   echo "* Debian/Ubuntu: buster, bullseye, focal"
-  echo "* Centos: centos7 (the only one currently supported.)"
+  echo "* Redhat: centos7 rocky8"
   exit 255
 fi
 
@@ -52,11 +52,20 @@ else
   REPO_SERVER=${APT_REPO_SERVER}
 fi
 
-REMOTE_CMD="/usr/local/bin/testing_to_stable_publish_packages.sh --distros ${DISTROS} --packages ${PACKAGES_LIST}"
+# Make sure jenkins scripts are up to date
+ssh -t \
+    -l jenkinsapt \
+    -p $SSH_PORT \
+    -o "StrictHostKeyChecking no" \
+    -o "ConnectTimeout 5" \
+    ${REPO_SERVER} \
+    "cd ~/arvados-dev && git fetch -a && git reset --hard origin/main"
 
 # Now we execute it remotely
 TMP_FILE=`mktemp`
 
+REMOTE_CMD="~/arvados-dev/jenkins/testing_to_stable_publish_packages.sh --distros ${DISTROS} --packages ${PACKAGES_LIST}"
+
 ssh -t \
     -l jenkinsapt \
     -p $SSH_PORT \