X-Git-Url: https://git.arvados.org/arvados-dev.git/blobdiff_plain/f55df5188d670fa5b27b7f711349661266c1f125..refs/heads/main:/jenkins/testing_to_stable_publish_packages.sh diff --git a/jenkins/testing_to_stable_publish_packages.sh b/jenkins/testing_to_stable_publish_packages.sh index 678256f..ecf918e 100755 --- a/jenkins/testing_to_stable_publish_packages.sh +++ b/jenkins/testing_to_stable_publish_packages.sh @@ -8,7 +8,6 @@ # --packages list of packages, comma separated, to move from dev_repo_dir to prod_repo_dir # --distros list of distros, comma separated, to which to publish packages -APT_REPO_BASE_DIR="/var/lib/freight" RPM_REPO_BASE_DIR="/var/www/rpm.arvados.org" ### MAIN #################################################################### @@ -32,70 +31,77 @@ done # Make sure the variables are set or provide an example of how to use them if [ -z "${packages}" ]; then echo "You must provide a comma-separated list of packages to publish, ie." - echo "* Debian: --packages=arvados-ws_0.1.20170906144951.22418ed6e-1_amd64.deb,keep-exercise_*,*170906144951*" - echo "* Centos: --packages=arvados-ws_0.1.20170906144951.22418ed6e-1.x86_64.rpm,keep-exercise_0.1.20170906144951.22418ed6e-1.x86_64.rpm,crunch-dispatch-local_0.1.20170906144951.22418ed6e-1.x86_64.rpm" + echo "* Debian: --packages=arvados-ws:0.1.20170906144951.22418ed6e-1,keep-exercise:1.2.3-1" exit 254 fi if [ -z "${distros}" ]; then echo "You must provide a space-separated list of LSB distribution codenames to which you want to publish to, ie." echo "* Debian: --distros=jessie,xenial,stretch,etc." - echo "* Centos: --distros=centos7,etc." + echo "* CentOS/Rocky: --distros=centos7,etc." exit 255 fi DIST_LIST=$(echo ${distros} | sed s/,/' '/g |tr '[:upper:]' '[:lower:]') -PACKAGES=$(echo ${packages} | sed s/,/' '/g) +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 centos ); 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' - ;; - *) - echo "Only centos7 is 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 ${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 ${RPM_REPO_BASE_DIR}/CentOS/${DIST_DIR_PROD} - done -else - for DISTNAME in ${DIST_LIST}; do - ADDED=() - cd ${APT_REPO_BASE_DIR} - mkdir -p ${APT_REPO_BASE_DIR}/apt/${DISTNAME} - echo "Copying packages ..." - for P in ${PACKAGES}; do - cp ${APT_REPO_BASE_DIR}/apt/${DISTNAME}-testing/${P} ${APT_REPO_BASE_DIR}/apt/${DISTNAME}/ - if [ $? -ne 0 ]; then - FAILED_PACKAGES="${FAILED_PACKAGES} ${P}" - else - TMP=`ls -C1 ${APT_REPO_BASE_DIR}/apt/${DISTNAME}-testing/${P}` - ADDED+=( "${TMP[@]}" ) - fi - done - for P in "${ADDED[@]}"; do - freight add apt/${DISTNAME}/$(basename ${P}) apt/${DISTNAME} - done - echo "Recreating repo apt/${DISTNAME} ..." - freight cache apt/${DISTNAME} - done -fi +for DISTNAME in ${DIST_LIST}; do + echo + echo "### Publishing packages for ${DISTNAME} ###" + echo + 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" echo "${FAILED_PACKAGES}" + exit 252 else echo "All packages published correctly" fi