summaryrefslogtreecommitdiffstats
path: root/bin/reproducible_maintainance.sh
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2015-03-31 13:18:29 +0200
committerHolger Levsen <holger@layer-acht.org>2015-04-03 11:53:35 +0200
commitbcc697c4ebb0f7ae0098607bd0b38773ee7bdf59 (patch)
tree0a64e66f217fd7cc53313761350835a598d72eea /bin/reproducible_maintainance.sh
parent3527298314353c0b35ad0216b828f7f2ab0454ad (diff)
downloadjenkins.debian.net-bcc697c4ebb0f7ae0098607bd0b38773ee7bdf59.tar.xz
fix language: s#maintainance#maintenance#g
Diffstat (limited to 'bin/reproducible_maintainance.sh')
-rwxr-xr-xbin/reproducible_maintainance.sh224
1 files changed, 0 insertions, 224 deletions
diff --git a/bin/reproducible_maintainance.sh b/bin/reproducible_maintainance.sh
deleted file mode 100755
index efdd9985..00000000
--- a/bin/reproducible_maintainance.sh
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/bin/bash
-
-# Copyright 2014-2015 Holger Levsen <holger@layer-acht.org>
-# released under the GPLv=2
-
-DEBUG=false
-. /srv/jenkins/bin/common-functions.sh
-common_init "$@"
-
-# common code defining db access
-. /srv/jenkins/bin/reproducible_common.sh
-
-DIRTY=false
-
-# prepare backup
-REP_RESULTS=/srv/reproducible-results
-mkdir -p $REP_RESULTS/backup
-cd $REP_RESULTS/backup
-
-# keep 30 days and the 1st of the month
-DAY=(date -d "30 day ago" '+%d')
-DATE=$(date -d "30 day ago" '+%Y-%m-%d')
-if [ "$DAY" != "01" ] && [ -f reproducible_$DATE.db.xz ] ; then
- rm -f reproducible_$DATE.db.xz
-fi
-
-# actually do the backup
-DATE=$(date '+%Y-%m-%d')
-if [ ! -f reproducible_$DATE.db.xz ] ; then
- cp -v $PACKAGES_DB .
- DATE=$(date '+%Y-%m-%d')
- mv -v reproducible.db reproducible_$DATE.db
- xz reproducible_$DATE.db
-fi
-
-# provide copy for external backups
-cp -v $PACKAGES_DB /var/lib/jenkins/userContent/
-
-# delete old temp directories
-OLDSTUFF=$(find $REP_RESULTS -maxdepth 1 -type d -name "tmp.*" -mtime +2 -exec ls -lad {} \;)
-if [ ! -z "$OLDSTUFF" ] ; then
- echo
- echo "Warning: old temp directories found in $REP_RESULTS"
- find $REP_RESULTS -maxdepth 1 -type d -name "tmp.*" -mtime +2 -exec rm -rv {} \;
- echo "These old directories have been deleted."
- echo
- DIRTY=true
-fi
-
-# find old schroots
-OLDSTUFF=$(find /schroots/ -maxdepth 1 -type d -name "reproducible-*-*" -mtime +2 -exec ls -lad {} \;)
-if [ ! -z "$OLDSTUFF" ] ; then
- echo
- echo "Warning: old schroots found in /schroots, which have been deleted:"
- find /schroots/ -maxdepth 1 -type d -name "reproducible-*-*" -mtime +2 -exec sudo rm -rf {} \;
- echo "$OLDSTUFF"
- echo
- DIRTY=true
-fi
-
-# find and warn about pbuild leftovers
-OLDSTUFF=$(find /var/cache/pbuilder/result/ -mtime +1 -exec ls -lad {} \;)
-if [ ! -z "$OLDSTUFF" ] ; then
- # delete known files, see #777537
- cd /var/cache/pbuilder/result/
- echo "Attempting file detection..."
- for i in $(find . -maxdepth 1 -mtime +1 -type f -exec basename {} \;) ; do
- case $i in
- stderr|stdout) rm -v $i
- ;;
- seqan-*.bed) rm -v $i # leftovers reported in #766741
- ;;
- bootlogo) rm -v $i
- ;;
- org.daisy.paper.CustomPaperCollection.obj) rm -v $i
- ;;
- debian-faq.pdf.gz|debian-faq.ps.gz|debian-faq.txt.gz) rm -v $i
- ;;
- sumo_doxygen_lastrun.log) rm -v $i
- ;;
- *) ;;
- esac
- done
- cd -
- # report the rest
- OLDSTUFF=$(find /var/cache/pbuilder/result/ -mtime +1 -exec ls -lad {} \;)
- if [ ! -z "$OLDSTUFF" ] ; then
- echo "Warning: old files or directories found in /var/cache/pbuilder/result/"
- echo "$OLDSTUFF"
- echo "Please cleanup manually."
- fi
- echo
- DIRTY=true
-fi
-
-# find failed builds due to network problems and reschedule them
-# only grep through the last 5h (300 minutes) of builds...
-# (ignore "*None.rbuild.log" because these are build which were just started)
-# this job runs every 4h
-FAILED_BUILDS=$(find /var/lib/jenkins/userContent/rbuild -type f ! -name "*None.rbuild.log" ! -mmin +300 -exec egrep -l -e 'E: Failed to fetch.*(Connection failed|Size mismatch|Cannot initiate the connection to)' {} \; || true)
-if [ ! -z "$FAILED_BUILDS" ] ; then
- echo
- echo "Warning: the following failed builds have been found"
- echo "$FAILED_BUILDS"
- echo
- echo "Rescheduling packages: "
- for SUITE in $(echo $FAILED_BUILDS | sed "s# #\n#g" | cut -d "/" -f7 | sort -u) ; do
- CANDIDATES=$(for PKG in $(echo $FAILED_BUILDS | sed "s# #\n#g" | grep "/$SUITE/" | cut -d "/" -f9 | cut -d "_" -f1) ; do echo -n "$PKG " ; done)
- check_candidates
- if [ $TOTAL -ne 0 ] ; then
- echo " - in $SUITE: $CANDIDATES"
- # '0' here means the artifacts will not be saved
- schedule_packages 0 $PACKAGE_IDS
- fi
- done
- DIRTY=true
-fi
-
-# find+terminate processes which should not be there
-HAYSTACK=$(mktemp)
-RESULT=$(mktemp)
-PBUIDS="1234 1111 2222"
-ps axo pid,user,size,pcpu,cmd > $HAYSTACK
-for i in $PBUIDS ; do
- for PROCESS in $(pgrep -u $i -P 1 || true) ; do
- # faked-sysv comes and goes...
- grep ^$PROCESS $HAYSTACK | grep -v faked-sysv >> $RESULT 2> /dev/null || true
- done
-done
-if [ -s $RESULT ] ; then
- echo
- echo "Warning: processes found which should not be there, maybe killing them now:"
- cat $RESULT
- echo
- for PROCESS in $(cat $RESULT | cut -d " " -f1 | xargs echo) ; do
- AGE=$(ps -p $PROCESS -o etimes= || echo 0)
- # a single build may only take half a day, so...
- if [ $AGE -gt 43200 ] ; then
- sudo kill -9 $PROCESS 2>&1
- echo "'kill -9 $PROCESS' done."
- else
- echo "Did not kill $PROCESS as it is only $AGE seconds old."
- fi
- done
- echo
- DIRTY=true
-fi
-rm $HAYSTACK $RESULT
-
-# find packages which build didnt end correctly
-QUERY="
- SELECT s.id, s.name, p.date_scheduled, p.date_build_started
- FROM schedule AS p JOIN sources AS s ON p.package_id=s.id
- WHERE p.date_scheduled != ''
- AND p.date_build_started != ''
- AND p.date_build_started < datetime('now', '-36 hours')
- ORDER BY p.date_scheduled
- "
-PACKAGES=$(mktemp)
-sqlite3 -init $INIT ${PACKAGES_DB} "$QUERY" > $PACKAGES 2> /dev/null || echo "Warning: SQL query '$QUERY' failed."
-if grep -q '|' $PACKAGES ; then
- echo
- echo "Warning: packages found where the build was started more than 36h ago:"
- echo "pkg_id|name|date_scheduled|date_build_started"
- echo
- cat $PACKAGES
- echo
- for PKG in $(cat $PACKAGES | cut -d "|" -f1) ; do
- echo "sqlite3 ${PACKAGES_DB} \"DELETE FROM schedule WHERE package_id = '$PKG';\""
- sqlite3 -init $INIT ${PACKAGES_DB} "DELETE FROM schedule WHERE package_id = '$PKG';"
- done
- echo "Packages have been removed from scheduling."
- echo
- DIRTY=true
-fi
-rm $PACKAGES
-
-# find packages which have been removed from unstable
-# commented out for now. This can't be done using the database anymore
-QUERY="SELECT source_packages.name FROM source_packages
- WHERE source_packages.name NOT IN
- (SELECT sources.name FROM sources)
- LIMIT 25"
-#PACKAGES=$(sqlite3 -init $INIT ${PACKAGES_DB} "$QUERY")
-PACKAGES=''
-if [ ! -z "$PACKAGES" ] ; then
- echo
- echo "Removing these removed packages from database:"
- echo $PACKAGES
- echo
- QUERY="DELETE FROM source_packages
- WHERE source_packages.name NOT IN
- (SELECT sources.name FROM sources)
- LIMIT 25"
- sqlite3 -init $INIT ${PACKAGES_DB} "$QUERY"
- cd /var/lib/jenkins/userContent
- for i in PACKAGES ; do
- find rb-pkg/ rbuild/ notes/ dbd/ -name "${i}_*" -exec rm -v {} \;
- done
- cd -
-fi
-
-# delete jenkins html logs from reproducible_builder_* jobs as they are mostly redundant
-# (they only provide the extended value of parsed console output, which we dont need here.)
-OLDSTUFF=$(find /var/lib/jenkins/jobs/reproducible_builder_* -maxdepth 3 -mtime +0 -name log_content.html -exec rm -v {} \; | wc -l)
-if [ ! -z "$OLDSTUFF" ] ; then
- echo
- echo "Removed $OLDSTUFF jenkins html logs."
- echo
-fi
-
-# remove artifacts older than 3 days
-ARTIFACTS=$(find /var/lib/jenkins/userContent/artifacts/* -maxdepth 1 -type d -mtime +3 -exec ls -lad {} \; || true)
-if [ ! -z "$ARTIFACTS" ] ; then
- echo
- echo "Removed old artifacts:"
- find /var/lib/jenkins/userContent/artifacts/* -maxdepth 1 -type d -mtime +3 -exec rm -rv {} \;
- echo
-fi
-
-if ! $DIRTY ; then
- echo "Everything seems to be fine."
- echo
-fi