Code

Add snapshots upload scripts
authorThomas Guyot-Sionnest <dermoth@aei.ca>
Sun, 25 Oct 2009 14:33:10 +0000 (10:33 -0400)
committerThomas Guyot-Sionnest <dermoth@aei.ca>
Thu, 29 Oct 2009 18:17:30 +0000 (14:17 -0400)
tools/sfsnapshot-upload [new file with mode: 0755]

diff --git a/tools/sfsnapshot-upload b/tools/sfsnapshot-upload
new file mode 100755 (executable)
index 0000000..1507cff
--- /dev/null
@@ -0,0 +1,100 @@
+#!/bin/bash
+# sfsnapshot-upload - Snapshot upload script using sfsnapshotgit
+# Original author: Thomas Guyot-Sionnest <tguyot@gmail.com>
+#
+# This script uses sfsnapshotgit to update the snapshot is needed and upload
+# it to SourceForge. The branches to create snapshot from can be given as an
+# argument, otherwise the default is master.
+
+# Handle command errors (-e) and coder sleep deprivation issues (-u)
+set -eu
+trap 'echo "An error occurred at line $LINENO"; exit 1' EXIT
+
+# This can be used to override the default in sfsnapshotgit:
+export SFSNAP_REPO=~/staging/nagiosplugins
+export SFSNAP_ORIGIN=origin
+export SFSNAP_DEST=~/staging/snapshot
+
+## Some stuff that shouldn't change often...
+# The file we'll use to create the snapshot
+sfsnapshot=~/sfsnapshotgit
+
+# Retention time for snapshots (in minutes)
+CLEAN_TIME=1440
+
+# Where to place the generated files
+OUT_SERVER="tonvoon@frs.sourceforge.net"
+OUT_PATH="/home/groups/n/na/nagiosplug/htdocs/snapshot"
+
+# Links to always point to the master branch for backwards-compatibility
+COMPATLINKS="HEAD trunk-`date -u +%Y%m%d%H%M`"
+# And compatibility links to always delete except the last one
+COMPATCLEANUP="trunk-*"
+
+# If one or more argument is given, this is the branches to create the snapshots from
+if [ $# -eq 0 ]
+then
+       HEADS='master'
+else
+       HEADS=$@
+fi
+
+for head in $HEADS ; do
+       file=$($sfsnapshot $head)
+       ln -sf $file $SFSNAP_DEST/nagios-plugins-$head.tar.gz
+       # Keep links by branch name too
+       [ -f "$SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}" ] || ln -s $file $SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}
+       if [ "$head" == "master" ]
+       then
+               for cclean in $COMPATCLEANUP
+               do
+                       find . -type l -name "nagios-plugins-$cclean.tar.gz" -delete
+               done
+               for compat in $COMPATLINKS
+               do
+                       ln -sf $file $SFSNAP_DEST/nagios-plugins-$compat.tar.gz
+               done
+       fi
+done
+
+# Cleanup old snapshots and links...
+cd $SFSNAP_DEST
+
+# Clean up links older than $CLEAN_TIME
+find . -type l -name '*.gz' -mmin +$CLEAN_TIME -delete
+
+# Then clean up files that we don't need
+for dest in `find . -type f -name '*.gz' |xargs -n 1 basename`
+do
+       # Loop over the list of linked-to files
+       for current in `find .  -type l -name '*.gz' |xargs -n 1 readlink | uniq`
+       do
+               if [ "$current" == "$dest" ]
+               then
+                       continue 2
+               fi
+       done
+       rm -f $dest
+done
+
+# Create MD5 sum
+cat <<-END_README > README
+This is the latest snapshot of nagiosplug, consisting of the following
+head(s):
+        $HEADS
+
+The nagios-plugins-<head>.tar.gz link will always point to the latest
+corresponding snapshot (nagios-plugins-<git-describe>.tar.gz).
+
+For backward-compatibility, the nagios-plugins-HEAD.tar.gz and
+nagios-plugins-trunk-<ts> point to their corresponding "master" head.
+
+The MD5SUM are:
+END_README
+md5sum *.gz | tee -a README > MD5SUM
+
+# Sync the files
+rsync -a --exclude=.htaccess --exclude=HEADER.html --delete "$SFSNAP_DEST/" "$OUT_SERVER:$OUT_PATH"
+
+trap - EXIT
+