#!/usr/bin/env bash #******************************************************************************* # Copyright (c) 2016 IBM Corporation and others. # # This program and the accompanying materials # are made available under the terms of the Eclipse Public License 2.0 # which accompanies this distribution, and is available at # https://www.eclipse.org/legal/epl-2.0/ # # SPDX-License-Identifier: EPL-2.0 # # Contributors: # David Williams - initial API and implementation #******************************************************************************* # Utility to clean build machine # DISABLED will prevent builds of that build type to not be cleaned up. # This is needed such as during the 2 or 3 weeks that we have a release # candidate, but do not publically make visible until the Simultaneious # Release. In those cases, we want to keep the originally named build around, # as well as any renamed versions of it. Valid values are the standard one # character "build types" we use (I,M,N,P). Leave blank (or commented out) # if nothing should be disabled. DISABLED="" function removeOldPromotionScripts () { echo -e "\n\tRemove old promotion scripts." find /shared/eclipse/promotion/queue -name "RAN*" -ctime +4 -ls -exec rm '{}' \; find /shared/eclipse/promotion/queue -name "TEST*" -ctime +1 -ls -exec rm '{}' \; find /shared/eclipse/promotion/queue -name "ERROR*" -ctime +4 -ls -exec rm '{}' \; find /shared/eclipse/equinox/promotion/queue -name "RAN*" -ctime +4 -ls -exec rm '{}' \; find /shared/eclipse/equinox/promotion/queue -name "TEST*" -ctime +1 -ls -exec rm '{}' \; find /shared/eclipse/equinox/promotion/queue -name "ERROR*" -ctime +4 -ls -exec rm '{}' \; # The job on Hudson that creates these files also cleans them up when over 2 days old. # find /shared/eclipse/testjobqueue -name "RAN*" -ctime +3 -ls -exec rm '{}' \; # find /shared/eclipse/testjobqueue -name "TEST*" -ctime +1 -ls -exec rm '{}' \; # find /shared/eclipse/testjobqueue -name "ERROR*" -ctime +4 -ls -exec rm '{}' \; } function removeOldDirectories () { rootdir=$1 ctimeAge=$2 pattern=$3 echo -e "\n\tCleaning rootdir: ${rootdir}" if [[ -e "${rootdir}" ]] then # leave at least one, on build machine. # TODO: this may work most of the time, since ran daily, but the correct # fix is work with the list. This will delete all, on some occasions. # Also, for build machine, it is really only I and M builds that we want to leave one in place. count=$( find "${rootdir}" -maxdepth 1 -type d -ctime ${ctimeAge} -name "${pattern}" | wc -l ) if [[ $count -gt 1 ]] then find "${rootdir}" -maxdepth 1 -type d -ctime ${ctimeAge} -name "${pattern}" -ls -exec rm -fr '{}' \; fi else echo -e "\t\tINFO: rootdir did not exist." fi } function removeBuildFamily () { buildmachine=$1 major=$2 minor=$3 days=$4 buildType=$5 if [[ ${buildType} =~ .*[${DISABLED}].* ]] then echo -e "\n\t${buildType} was on the DISABLED list, so not cleaned up\n" else basedir="/shared/eclipse/${buildmachine}/${major}${buildType}/siteDir" chkdir="eclipse/downloads/drops4" removeOldDirectories "${basedir}/${chkdir}" "${days}" "${buildType}20*" chkdir="equinox/drops" removeOldDirectories "${basedir}/${chkdir}" "${days}" "${buildType}20*" chkdir="updates/${major}.${minor}-${buildType}-builds" removeOldDirectories "${basedir}/${chkdir}" "${days}" "${buildType}20*" fi } function cleanBuildMachine () { buildmachine=$1 echo -e "\n\tDaily clean of ${buildmachine} build machine on $(date )\n" echo -e "\tRemember to "turn off" when M build or I build needs to be deferred promoted," echo -e "\tsuch as for "quiet week".\n" INUSE_BEFORE=$(nice -12 du /shared/eclipse/${buildmachine} -sh) major=4 minor=9 days="+4" buildType=P removeBuildFamily ${buildmachine} ${major} ${minor} ${days} ${buildType} minor=9 days="+2" buildType=N removeBuildFamily ${buildmachine} ${major} ${minor} ${days} ${buildType} minor=9 days="+4" buildType=I removeBuildFamily ${buildmachine} ${major} ${minor} ${days} ${buildType} minor=9 days="+4" buildType=Y removeBuildFamily ${buildmachine} ${major} ${minor} ${days} ${buildType} minor=8 days="+4" buildType=M removeBuildFamily ${buildmachine} ${major} ${minor} ${days} ${buildType} # This function cleaned up promotion queues on # /shared/eclipse/ # which shoudl no longer be needed, since we "promote" from # Hudson, which cleans itself up, so to speak. # so we can remove this function. Will simply comment it # out, for now. # removeOldPromotionScripts INUSE_AFTER=$(nice -12 du /shared/eclipse/${buildmachine} -sh) echo -e "\n\tDisk used before cleaning: $INUSE_BEFORE" echo -e "\tDisk used after cleaning: $INUSE_AFTER" } cleanBuildMachine builds