From 39bd31f98db80e6a5de482f0b9da6aa73db8d289 Mon Sep 17 00:00:00 2001 From: Thomas Oulevey Date: May 19 2015 13:09:07 +0000 Subject: - Add cache mechanism for repo regneration. --- diff --git a/cron.d/mash_run.sh b/cron.d/mash_run.sh index cc0ed9d..211759a 100755 --- a/cron.d/mash_run.sh +++ b/cron.d/mash_run.sh @@ -11,6 +11,8 @@ EOF } # Global config +# koji binary +KOJI="/usr/bin/koji" # mash binary MASH="/usr/bin/mash" # mash config containing mash.conf @@ -19,6 +21,8 @@ MASH_CONF="/etc/mash" MASH_DEST="/mnt/kojishare/repos" # repoviewurl in mash config MASH_VIEWURL="http://cbs.centos.org/repos" +#cache +MASH_CACHE="/var/cache/cbs-mash" # log directory LOG_DIR="/var/log/mash" # End Global @@ -51,19 +55,20 @@ done shift $((${OPTIND} - 1)) +# Check if user is allowed to send command to koji and has 'admin' permission +PERM=`${KOJI} list-permissions --mine` +if [ "${PERM}" != "admin" ] +then + echo "[ERROR] Koji misconfigure/missing admin privilege for creating SIG tags" + exit 1 +fi + if ( ! ${optiont} ) then - # Check if user is allowed to send command to koji and has 'admin' permission - KOJI=`which koji` - PERM=`${KOJI} list-permissions --mine` - if [ "${PERM}" != "admin" ] - then - echo "[ERROR] Koji misconfigure/missing admin privilege for creating SIG tags" - exit 1 - fi - TEST_TAGS=`koji list-tags | grep "\-testing"` - RELEASE_TAGS=`koji list-tags | grep "\-release"` - TAGS="${TEST_TAGS} ${RELEASE_TAGS}" + CANDIDATE_TAGS=`${KOJI} list-tags | grep "\-candidate"` + TEST_TAGS=`${KOJI} list-tags | grep "\-testing"` + RELEASE_TAGS=`${KOJI} list-tags | grep "\-release"` + TAGS="${CANDIDATE_TAGS} ${TEST_TAGS} ${RELEASE_TAGS}" fi print_mash_template() @@ -106,6 +111,9 @@ mash_run () { ( $optionv ) && echo " -> [INFO] mash run succeeded ${log}" } +# Ensure the cache directory is available +[ ! -d $MASH_CACHE ] && mkdir -p $MASH_CACHE + # Ensure we do not have parallel runs pidfile=/var/run/mash-run.pid if [ -e $pidfile ]; then @@ -123,6 +131,24 @@ echo $$ > $pidfile for TAG in ${TAGS} do LOG="${LOG_DIR}/mash.${TAG}.log" + if [ ! -f $MASH_CACHE/$TAG.buildlist ] + then + ${KOJI} list-tagged $TAG > $MASH_CACHE/$TAG.buildlist + else + BUILDLIST=`mktemp` + ${KOJI} list-tagged $TAG > $BUILDLIST + diff $BUILDLIST $MASH_CACHE/$TAG.buildlist &>> $LOG + if [ $? -eq 0 ] + then + echo " -> skipping. No new build in $TAG" &>> $LOG + rm -rf $BUILDLIST + continue + else + echo " -> updating cache for $TAG" &>> $LOG + cp $BUILDLIST $MASH_CACHE/$TAG.buildlist + fi + rm -rf $BUILDLIST + fi mash_prepare "${TAG}" "${LOG}" mash_run "${TAG}" "${LOG}" & done