gump-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gene...@gump.apache.org
Subject [Gump Wiki] New: BrutusConfig/NightlyBuild
Date Wed, 23 Jun 2004 16:38:02 GMT
   Date: 2004-06-23T09:38:01
   Editor: 130.89.169.128 <>
   Wiki: Gump Wiki
   Page: BrutusConfig/NightlyBuild
   URL: http://wiki.apache.org/gump/BrutusConfig/NightlyBuild

   we still nightly builds...

New Page:

Gump is not so suitable for nightly builds as its not trusted. Might make sense to configure
some nightly build support on brutus. This document details how I set the basics for that
up on brutus. If you want brutus to build nightlies for you, [wiki:BrutusConfig/RequestNightlyBuild
request a nightly build].

{{{
# create user for nightly builds
useradd -d /home/nightlybuild -g nightlybuild nightlybuild
passwd nightlybuild # something sensible
su - nightlybuild

# set up basic profile
echo #! /bin/bash > ~/.profile
echo export JAVA_HOME=/usr/local/j2sdk1.4.2_04 >> ~/.profile
echo export PATH=$PATH:$JAVA_HOME/bin >> ~/.profile

# set up dir structure
mkdir ~/bin
echo export PATH=$PATH:/home/nightlybuild/bin >> ~/.profile
mkdir ~/src
mkdir ~/opt
mkdir ~/tmp
mkdir ~/cvs
mkdir -p ~/svn/asf

# set up maven
echo export MAVEN_HOME=/home/nightlybuild/opt/maven >> ~/.profile
echo export PATH=$PATH:$MAVEN_HOME/bin >> ~/.profile
wget http://dist.apache.easynet.nl/maven/binaries/maven-1.0-rc3.tar.bz2
mv maven-1.0-rc3.tar.bz2 ~/src
tar -jxf ~/src/maven-1.0-rc3.tar.bz2
mv maven-1.0-rc3 ~/opt
ln -s ~/opt/maven-1.0-rc3 ~/opt/maven

# set up ant
echo export ANT_HOME=/home/nightlybuild/opt/ant >> ~/.profile
echo export PATH=$PATH:$ANT_HOME/bin >> ~/.profile
wget http://apache.mirror.transip.nl/ant/binaries/apache-ant-1.6.1-bin.tar.bz2
mv apache-ant-1.6.1-bin.tar.bz2 ~/src
tar -jxf ~/apache-ant-1.6.1-bin.tar.bz2
mv apache-ant-1.6.1 ~/opt
ln -s ~/opt/maven-1.0-rc3 ~/opt/maven
ln -s ~/opt/apache-ant-1.6.1 ~/opt/ant

# import new settings
. ~/.profile

# initialize maven
cd ~/tmp
maven -Dpackage=com.mycompany.app genapp
maven dist
maven site
maven clover
maven junit-report:report
rm -Rf ~/tmp/*

# copy some commonly needed jars from another machine
scp -r ~/.maven/repository/jsse ~/.maven/repository/javamail ~/.maven/repository/jms nightlybuild@brutus.apache.org:~/.maven/repository

# save this basic maven setup
cp -r ~/.maven ~/.maven-basic-profile

# install the most common optional ant tasks
mkdir -p ~/.ant/lib
cp ~/.maven/repository/junit/jars/junit-3.8.1.jar ~/.ant/lib/
cp ~/.maven/repository/jsse/jars/jsse-1.0.3.jar ~/.ant/lib/
cp ~/.maven/repository/javamail/jars/mailapi-1.3.1.jar ~/.ant/lib/
wget http://www.apache.org/dist/java-repository/bsf/jars/bsf-2.3.0.jar \
     http://www.ibiblio.org/maven/rhino/jars/js-1.5R4.1.jar \
     http://www.apache.org/dist/java-repository/xalan/jars/xalan-2.5.1.jar \
     http://www.ibiblio.org/maven/jython/jars/jython-2.1.jar \
     http://www.ibiblio.org/maven/bsh/jars/bsh-2.0b1.jar \
     http://www.ibiblio.org/maven/jsch/jars/jsch-0.1.8.jar
mv *.jar ~/.ant/lib

# save this basic ant setup
cp -r ~/.ant ~/.ant-basic-profile
}}}

This script for running a build goes into {{{~/bin/build}}}:

{{{
#! /bin/bash
#
# Author: Leo Simons
# Copyright (c) 2004 The Apache Software Foundation. All rights reserved.
#
# sample invocations:
#    build svn maven site excalibur trunk
#    build cvs ant dist ant
#    build cvs maven jar:jar jakarta-commons collections

# initialize...
repo=$1        # svn|cvs|...
cmd=$2         # ant|maven|...
target=$3      # jar|site|...
project=$4     # ant|excalibur|jakarta-commons
dir=$5         # .|trunk|logging|...
date=`date +%Y%m%d`
time=`date +%H:%M:%S`
  
# use a clean ant and a clean maven...
rm -Rf /home/nightlybuild/.maven
cp -r /home/nightlybuild/.maven-basic-profile /home/nightlybuild/.maven
rm -Rf /home/nightlybuild/.ant
cp -r /home/nightlybuild/.ant-basic-profile /home/nightlybuild/.ant
  
# log stuff
logdir=~/public_html/builds/$project/$date
mkdir -p $logdir
logsubname=$(eval echo $dir | sed -e 's/\//_/g')
log=$logdir/time:$time-target:$target-dir:$logsubname.txt
 
echo Starting $target build of $project/$dir at $time >> $log
  
# clean up
builddir=/home/nightlybuild/$repo/asf/$project/$dir
cd $builddir 2>&1 3>&1 4>&1 5>&1 6>&1 7>&1 8>&1
9>&1 >> $log
  
echo Working directory: $builddir >> $log
echo >> $log
  
echo Cleaning up .. >> $log
find -name '*.log' -or -name target -or -name build | xargs rm -Rf 2>&1 3>&1
4>&1 5>&1 6>&1 7>&1 8>&1 9>&1 >> $log
echo >> $log
  
echo Running command: $cmd $target 2>&1 3>&1 4>&1 5>&1 6>&1
7>&1 8>&1 9>&1 >> $log
echo --------------------------------------------------------------------------- >>
$log
eval $cmd $target 2>&1 3>&1 4>&1 5>&1 6>&1 7>&1
8>&1 9>&1 >> $log
echo --------------------------------------------------------------------------- >>
$log
 
echo looking for license... >> $log
licenses=$(find .                            \
  \( -path '*build*' -or -path '*target*' \) \
  -and \(                                    \
    -name '*.gz'                             \
    -or -name '*.zip'                        \
    -or -name '*.bz2'                        \
    -or -name '*.jar'                        \
  \)                                         \
  \( -not -path '*.svn*' \)                  )
if [ -n "$licenses" ]; then
  echo found license, copying results... >> $log
  cp -f -v --target-directory $logdir 2>&1 3>&1 4>&1 5>&1 6>&1
7>&1 8>&1 9>&1 >> $log
 
  files=$(find .                               \
    \( -path '*build*' -or -path '*target*' \) \
    -and \(                                    \
      -name '*.gz'                             \
      -or -name '*.zip'                        \
      -or -name '*.bz2'                        \
      -or -name '*.jar'                        \
    \)                                         \
    \( -not -path '*.svn*' \)                  )
  if [ -n "$files" ]; then
    echo $files >> $log
    cp -f -v --target-directory $logdir 2>&1 3>&1 4>&1 5>&1 6>&1
7>&1 8>&1 9>&1 >> $log
  fi
fi
echo --------------------------------------------------------------------------- >>
$log
echo >> $log
  
echo Attempting to clean old logs out... >> $log
echo
cd $logdir/..
year=`date +%Y`
month=`date +%m`
day=`date +%d`
  
oldyear=$(($year - 1))
oldmonth=$(($month - 1))
oldday=$(($day - 5))
  
files=$(find . \
  -type d -maxdepth 1 \
  -name $oldyear* \
  -or -name $year$oldmonth* \
  -or -name $year$month$oldday* )
 
if [ -n "$files" ]; then
  echo "deleting..." >> $log
  echo $files >> $log
  rm -Rf $files 2>&1 3>&1 4>&1 5>&1 6>&1 7>&1 8>&1
9>&1 >> $log
fi
  
echo ...done. >> $log
echo --------------------------------------------------------------------------- >>
$log
echo >> $log
}}}

Set up an extensible crontab:

{{{
echo '#! /bin/bash
 
. /etc/profile
. /home/nightlybuild/.profile
for i in `ls /home/nightlybuild/etc/cron.d/*.sh`; do
  sh $i 2>&1 3>&1 > /dev/null
done' > ~/bin/cron.d.sh

chmod ug+x ~/bin/cron.d.sh
mkdir -p ~/etc/cron.d
echo '5 18 * * * /home/nightlybuild/bin/cron.d.sh' > ~/etc/crontab
crontab ~/etc/crontab
}}}

Add projects to build:

{{{
echo 'build svn maven site excalibur trunk/site' > ~/etc/cron.d/00-build-excalibur-site.sh
# ...
}}}

Do a test run:

{{{
bash ~/bin/cron.d.sh
}}}

And take a look at the contents at

  http://brutus.apache.org/~nightlybuild/builds/

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@gump.apache.org
For additional commands, e-mail: general-help@gump.apache.org


Mime
View raw message