mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-04-26 00:27:45 -04:00
125 lines
3.7 KiB
Bash
Executable file
125 lines
3.7 KiB
Bash
Executable file
#!/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 in sfsnapshot-upload 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=~/bin/sfsnapshotgit
|
|
|
|
# Retention time for snapshots (in minutes), 0 for no retention.
|
|
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
|
|
|
|
# If we don't keep old snapshots we can clean up all links now
|
|
if [ $CLEAN_TIME -eq 0 ]
|
|
then
|
|
find $SFSNAP_DEST -type l -name '*.gz' -delete
|
|
fi
|
|
|
|
for head in $HEADS ; do
|
|
# This runs the actual snapshot code. It creates new snapshots if needed and always
|
|
# return the current snapshot file (even if it wasn't modified).
|
|
file=$($sfsnapshot $head)
|
|
# Create main head link
|
|
ln -sf $file $SFSNAP_DEST/nagios-plugins-$head.tar.gz
|
|
|
|
# Keep links by branch name too if we keep old snapshots, so we can keep tracks of them
|
|
if [ $CLEAN_TIME -gt 0 -a ! -e "$SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}" ]
|
|
then
|
|
ln -s $file $SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}
|
|
fi
|
|
|
|
# Cleanup and re-create backward-compatibility links
|
|
if [ "$head" == "master" ]
|
|
then
|
|
for cclean in $COMPATCLEANUP
|
|
do
|
|
find $SFSNAP_DEST -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
|
|
|
|
cd $SFSNAP_DEST
|
|
|
|
# Clean up links older than $CLEAN_TIME if needed
|
|
if [ $CLEAN_TIME -gt 0 ]
|
|
then
|
|
find . -type l -name '*.gz' -mmin +$CLEAN_TIME -delete
|
|
fi
|
|
|
|
# Now clean up files that we don't need
|
|
# 1. loop over actual snapshots
|
|
for dest in `find . -type f -name '*.gz' |xargs -n 1 basename`
|
|
do
|
|
# 2. Loop over the list of linked-to files
|
|
for current in `find . -type l -name '*.gz' |xargs -n 1 readlink | sort | uniq`
|
|
do
|
|
if [ "$current" == "$dest" ]
|
|
then
|
|
# File is being linked to - don't delete (continue first loop)
|
|
continue 2
|
|
fi
|
|
done
|
|
# No link to this file, we can drop it
|
|
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>.tar.gz point to their corresponding "master"
|
|
head.
|
|
|
|
The tarballs will only be updated when a change has been made. The
|
|
MD5SUM file is updated every time the snapshot script runs.
|
|
|
|
The MD5SUMs are:
|
|
END_README
|
|
md5sum *.gz | tee -a README > MD5SUM
|
|
|
|
# Sync the files
|
|
[ -n "$OUT_SERVER" ] && OUT_SERVER="$OUT_SERVER:"
|
|
rsync -a --exclude=.htaccess --exclude=HEADER.html --delete "$SFSNAP_DEST/" "$OUT_SERVER$OUT_PATH"
|
|
|
|
trap - EXIT
|
|
|