| #!/bin/sh |
| |
| # ---------------------------------------------------------------------------------- |
| |
| . $HOME/.profile |
| |
| CMD=$1 |
| |
| [ "$1" = "" ] && echo && echo "You must specify a checkout or update!" && echo && exit 1 |
| |
| FROM=continuum@maven.zones.apache.org |
| TO=notifications@maven.apache.org |
| DATE=`date` |
| |
| PID=$$ |
| RUNNING=`ps -ef | grep ci_continuum.sh | grep -v 'sh -c' | grep -v grep | grep -v $PID` |
| if [ ! -z "$RUNNING" ]; then |
| if [ "$CMD" = "checkout" ]; then |
| echo "From: $FROM" > running_log |
| echo "To: $TO" >> running_log |
| echo "Subject: [continuum build trunk - SKIPPED - $CMD] $DATE" >>running_log |
| echo "" >> running_log |
| echo "ci_continuum.sh already running... exiting" >>running_log |
| echo "$RUNNING" >>running_log |
| /usr/sbin/sendmail -t < running_log |
| fi |
| exit 1 |
| fi |
| |
| HOME_DIR=$HOME |
| DIR=$HOME_DIR/checkouts |
| SUNREPO=$HOME_DIR/sunrepo |
| REPO=$HOME_DIR/maven-repo-local-ci |
| SCM_LOG=$HOME_DIR/scm.log |
| TIMESTAMP=`date +%Y%m%d.%H%M%S` |
| WWW=$HOME/public_html |
| DEPLOY_DIR=$WWW/builds/trunk |
| DEPLOY_SITE=http://maven.zones.apache.org/~continuum/builds/trunk |
| DIST_WAR=continuum-${TIMESTAMP}.war |
| DIST_APP=continuum-${TIMESTAMP}.tar.gz |
| SVN=svn |
| |
| M2_HOME=/usr/local/maven-2.0.7 |
| export M2_HOME |
| PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin |
| export PATH |
| |
| MESSAGE_DIR=$WWW/logs/trunk |
| MESSAGE_NAME=continuum-build-log-${TIMESTAMP}.txt |
| MESSAGE=${MESSAGE_DIR}/${MESSAGE_NAME} |
| |
| mkdir -p $DEPLOY_DIR |
| mkdir -p $MESSAGE_DIR |
| |
| # ---------------------------------------------------------------------------------- |
| |
| # Wipe out the working directory and the repository and start entirely |
| # from scratch. |
| |
| # ---------------------------------------------------------------------------------- |
| |
| BUILD_REQUIRED=false |
| if [ -f $HOME_DIR/build_required ]; then |
| BUILD_REQUIRED=`cat $HOME_DIR/build_required` |
| fi |
| |
| if [ ! -d $DIR/continuum ]; then |
| CMD="checkout" |
| fi |
| |
| ( |
| if [ "$CMD" = "checkout" ] |
| then |
| |
| rm -rf $DIR > /dev/null 2>&1 |
| |
| mkdir $DIR |
| |
| rm -rf $REPO > /dev/null 2>&1 |
| |
| mkdir -p $REPO |
| |
| cp -R $SUNREPO/* $REPO/ |
| |
| echo |
| echo "Performing a clean check out of continuum ..." |
| echo |
| |
| ( |
| cd $DIR |
| |
| $SVN co http://svn.apache.org/repos/asf/maven/continuum/trunk continuum > $SCM_LOG 2>&1 |
| |
| echo "true" > $HOME_DIR/build_required |
| ) |
| |
| else |
| |
| echo |
| echo "Performing an update of continuum ..." |
| echo |
| |
| ( |
| cd $DIR/continuum |
| |
| $SVN update > $SCM_LOG 2>&1 |
| |
| grep "^[PUAD] " $SCM_LOG > /dev/null 2>&1 |
| |
| if [ "$?" = "1" ] |
| then |
| |
| echo $BUILD_REQUIRED > $HOME_DIR/build_required |
| |
| else |
| |
| echo "true" > $HOME_DIR/build_required |
| |
| fi |
| ) |
| |
| fi |
| |
| BUILD_REQUIRED=`cat $HOME_DIR/build_required` |
| |
| if [ "$BUILD_REQUIRED" = "true" ] |
| then |
| |
| echo "Updates occured, build required ..." |
| echo |
| grep "^[PUAD] " $SCM_LOG |
| echo |
| |
| ( |
| cd $DIR/continuum |
| |
| $M2_HOME/bin/mvn --settings $HOME/.m2/settings-ci.xml -Denv=test --batch-mode --no-plugin-registry --update-snapshots -e clean:clean install |
| ret=$?; if [ $ret != 0 ]; then exit $ret; fi |
| ) |
| ret=$?; if [ $ret != 0 ]; then exit $ret; fi |
| |
| # Only created on success |
| |
| echo |
| echo "Creating continuum distribution for public consumption: ${DEPLOY_SITE}/${DIST_WAR}" |
| echo |
| |
| mkdir -p $DEPLOY_DIR > /dev/null 2>&1 |
| |
| ( |
| cd $DIR/continuum/continuum-webapp |
| |
| mv target/continuum*.war $DEPLOY_DIR/$DIST_WAR |
| ) |
| ret=$?; if [ $ret != 0 ]; then exit $ret; fi |
| |
| echo |
| echo "Creating continuum distribution for public consumption: ${DEPLOY_SITE}/${DIST_APP}" |
| echo |
| |
| ( |
| cd $DIR/continuum/continuum-plexus-runtime |
| |
| mv target/apache-continuum*.tar.gz $DEPLOY_DIR/$DIST_APP |
| ) |
| ret=$?; if [ $ret != 0 ]; then exit $ret; fi |
| |
| else |
| echo "No updates occured, no build required. Done." |
| fi |
| |
| ) >> $MESSAGE 2>&1 |
| ret=$? |
| |
| grep "FATAL ERROR" $MESSAGE > /dev/null 2>&1 |
| fatal_error=$? |
| |
| # Only send mail to the list if a build was required. |
| |
| host=`hostname` |
| |
| BUILD_REQUIRED=`cat $HOME_DIR/build_required` |
| |
| if [ "$BUILD_REQUIRED" = "true" ] |
| then |
| echo "From: $FROM" > log |
| echo "To: $TO" >> log |
| if [ $ret != 0 ]; then |
| echo "Subject: [continuum build trunk - FAILED - $CMD] $DATE" >> log |
| elif [ $fatal_error != 1 ]; then |
| echo "Subject: [continuum build trunk - FAILED - $CMD] $DATE" >> log |
| else |
| echo "Subject: [continuum build trunk - SUCCESS - $CMD] $DATE" >> log |
| echo "" >> log |
| echo "Distribution:" >> log |
| echo "War: ${DEPLOY_SITE}/${DIST_WAR}" >>log |
| echo "Standalone app: ${DEPLOY_SITE}/${DIST_APP}" >>log |
| rm $HOME_DIR/build_required |
| fi |
| echo "" >> log |
| echo "Log:" >> log |
| echo "http://maven.zones.apache.org/~continuum/logs/trunk/${MESSAGE_NAME}" >> log |
| |
| /usr/sbin/sendmail -t < log |
| fi |