#!/bin/bash -ex # Hudson build script for Opsview builds on a dev server # Expects to be run as root - use sudo -E to preserve environment cleanup() { echo "cleaning up!" su nagios -c "/usr/local/opsview-web/bin/opsview-web stop || true" su nagios -c "/usr/local/nagios/bin/rc.opsview stop || true" # Need to remove this so that opsview-agent updates doesn't overwrite perl libraries within rm -rf /usr/local/nagios/perl # Need to remove this so that nightly builds do not overwrite permissions rm -f /usr/local/nagios /usr/local/opsview-web chown -R $user "$WORKSPACE/$projectdir" } # For community on tosh: # hudson trunk /var/lib/hudson/opsview_home # For enterprise on ov-build-lenny-64: # buildbot opsview-enterprise /var/hudson/opsview_enterprise_home user=$1 projectdir=$2 linksdir=$3 if [[ -z "$WORKSPACE" ]] ; then echo "WORKSPACE not set" exit 1 fi cd "$WORKSPACE/$projectdir" trap 'cleanup' EXIT chown -R nagios "$WORKSPACE/$projectdir" # Remove old files generated by opsview-core/t/990nagconfgen.pl (kept for debugging) # Sometimes get failures if (I think) files get removed while this is running. Force to be okay find /tmp -name "configs.*" -mtime +7 -exec rm -r {} \; || true # Delete this directory, which sometimes gets left behind by other tests rm -fr /tmp/opsview # Just if it already exists - can happen after a build rm -fr /usr/local/nagios/perl rm -fr /usr/local/nagios rm -f /usr/local/opsview-web ln -s "$WORKSPACE/$projectdir/opsview-core" /usr/local/nagios ln -s "$WORKSPACE/$projectdir/opsview-web" /usr/local/opsview-web rm -fr /usr/local/nagios/perl [[ -d /opt/opsview ]] || mkdir /opt/opsview rm -fr /opt/opsview/perl ln -s $linksdir/perl/opt/opsview/perl /opt/opsview/perl mkdir /usr/local/nagios/perl ln -s $linksdir/perl/opt/opsview/perl/lib/perl5 /usr/local/nagios/perl/lib ln -s $linksdir/perl/opt/opsview/perl/bin /usr/local/nagios/perl/bin [[ ! -d /var/log/opsview ]] ||[[ ! -d /var/log/opsview ]] || chmod 666 /var/log/opsview/opsview*.log su nagios -c "mkdir -p /usr/local/nagios/var/spool/monitorpacks" # Setup PATH for make dev, as par.pl needs to be found PATH=$PATH:/opt/opsview/perl/bin export PERL5LIB=/opt/opsview/perl/lib/perl5:/usr/local/nagios/perl/lib:$PERL5LIB env opsview-core/bin/db_mysql -u root su nagios -c "make dev" su nagios -c "make install-dev" su nagios -c "/usr/local/nagios/bin/db_opsview db_install" # Stop notifications cp -p "$WORKSPACE/$projectdir/tools/hudson.opsview.conf" /usr/local/nagios/etc/opsview.conf cp -p "$WORKSPACE/$projectdir/tools/hudson.instance.cfg" /usr/local/nagios/etc/instance.cfg # Ignore testing for the moment while building packages su nagios -c "env OPSVIEW_TEST_HUDSON=1 make junit" # Cleanup if everything successful make clean