Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSravan Kumar Lakkimsetti2019-11-04 11:12:35 +0000
committerSravan Kumar Lakkimsetti2019-11-04 11:12:35 +0000
commit085ed5ace97a9d5dfd2a6e1f69162234e8eef215 (patch)
treed46fc41383ead1a3d8a0e347965a570072b101fd /cje-production/cleaners/dailyCleanDownloads.sh
parent9d8237b5b02ae4ad9d8b0c44dd4853872e9a1112 (diff)
downloadeclipse.platform.releng.aggregator-085ed5ace97a9d5dfd2a6e1f69162234e8eef215.tar.gz
eclipse.platform.releng.aggregator-085ed5ace97a9d5dfd2a6e1f69162234e8eef215.tar.xz
eclipse.platform.releng.aggregator-085ed5ace97a9d5dfd2a6e1f69162234e8eef215.zip
Bug 552657 - Migrate old builds cleanup job to JIRO
Change-Id: I7c06879b06cc61c02d72141a9fc6d3d1a729c0c3 Signed-off-by: Sravan Kumar Lakkimsetti <sravankumarl@in.ibm.com>
Diffstat (limited to 'cje-production/cleaners/dailyCleanDownloads.sh')
-rwxr-xr-xcje-production/cleaners/dailyCleanDownloads.sh126
1 files changed, 126 insertions, 0 deletions
diff --git a/cje-production/cleaners/dailyCleanDownloads.sh b/cje-production/cleaners/dailyCleanDownloads.sh
new file mode 100755
index 000000000..049be6180
--- /dev/null
+++ b/cje-production/cleaners/dailyCleanDownloads.sh
@@ -0,0 +1,126 @@
+#!/bin/bash
+#*******************************************************************************
+# Copyright (c) 2019 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:
+# Sravan Lakkimsetti - initial API and implementation
+#*******************************************************************************
+
+# Utility to clean build machine
+echo -e "\n\tDaily clean of ${HOSTNAME} download server on $(date )\n"
+
+#
+# Checks whether a build can be retained or not.
+# returns 0 if the build can be retained
+#
+function canBeRetained ()
+{
+ retval=1
+ buildName=$1
+ grep BUILD_FAILED ${buildName}/buildproperties.shsource >/dev/null 2>&1
+ if [ $? -ne 0 ]; then #build didn't fail
+ if [ -f "${buildName}/buildUnstable" ]; then #build is marked unstable so should not be retained
+ retval=1
+ else
+ retval=0
+ fi
+ fi
+ return $retval
+}
+
+#
+# remove a build
+#
+
+function removeBuild ()
+{
+ buildname=$1
+ rm -fr $buildname
+ RC=$?
+ if [[ $RC = 0 ]];then
+ echo -e "Removed: $buildname"
+ else
+ echo -e "\n\tAn Error occurred removing $buildname. RC: $RC"
+ fi
+}
+
+cDir="/home/data/httpd/download.eclipse.org/eclipse/downloads/drops4"
+buildType="I*"
+allOldBuilds=$( find ${cDir} -maxdepth 1 -type d -ctime +5 -name "${buildType}"|sort )
+nbuilds=$( find ${cDir} -maxdepth 1 -type d -name "${buildType}" | wc -l )
+echo -e "\tNumber of I-builds before cleaning: $nbuilds"
+
+# Make sure we leave at least 4 on DL server, no matter how old
+# To avoid 'ls' see http://mywiki.wooledge.org/ParsingLs
+# technically, applies to "find" as well.
+shopt -s nullglob
+count=0
+files=(${cDir}/${buildType})
+# We count on files being "ordered" by date/timestamp in name
+for ((i=${#files[@]}-1; i>=0; --i)); do
+ newest[$count]="${files[$i]}"
+ count=$(( count + 1 ))
+ if [ $count -gt 3 ]
+ then
+ break
+ fi
+done
+
+areNotToDelete=$(printf '%s\n' "${newest[@]}" | paste -sd '|')
+
+currentWeekNum=0 #week number from start of the year user to identify the week in which the build is created
+found=0 #it will be 1 when we found a build that can be retained in that week
+
+for buildname in ${allOldBuilds}; do
+ if [[ $buildname =~ $areNotToDelete ]]
+ then
+ echo -e "\tDEBUG: Not removed (since one of 4 newest, even though old): \n\t$buildname"
+ else
+ buildId=$(basename $buildname) #extract buildId
+ yy=$(echo $buildId|cut -b2-5) #extract year from buildId
+ mm=$(echo $buildId|cut -b6-7) #extract month
+ dd=$(echo $buildId|cut -b8-9) #extract day
+ day=${mm}/${dd}/${yy} #construct build date
+ dayOfWeek=$(date -d $day +%u) #get the day of the week like monday, tue, etc
+ weekNum=$(date -d $day +%U) #get the week number from start of the year
+
+ #special case for Sunday. unix considers sunday as the start of the week. but for us we need to consider
+ #monday as start of the week. For this purpose we subtract 1 to place the build in previous week
+ if [ $dayOfWeek -eq 7 ]; then
+ weekNum=$(expr $weekNum - 1)
+ if [ $weekNum -le 0 ]; then #check for the yearend
+ weekNum=53
+ fi
+ fi
+
+ canBeRetained ${buildname}
+ retain=$?
+
+ if [ $weekNum -eq $currentWeekNum ]; then
+ if [ $retain -eq 0 -a $found -ne 1 ]; then # we didn't found a build that can be retained in the current week
+ found=1
+ else
+ removeBuild $buildname
+ fi
+ else #week changed
+ currentWeekNum=$weekNum
+ found=0
+ if [ $retain -eq 0 -a $dayOfWeek -eq 1 ]; then
+ found=1
+ else
+ removeBuild $buildname
+ fi
+ fi
+ fi
+done
+
+nbuilds=$( find ${cDir} -maxdepth 1 -type d -name "${buildType}" | wc -l )
+echo -e "\tNumber of N-builds after cleaning: $nbuilds"
+

Back to the top