Raible's Wiki

Raible Designs
Wiki Home
News
Recent Changes

AppFuse

Homepage
  - Korean
  - Chinese
  - Italian
  - Japanese

QuickStart Guide
  - Chinese
  - French
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish
  - Japanese

User Guide
  - Korean
  - Chinese

Tutorials
  - Chinese
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish

FAQ
  - Korean

Latest Downloads

Other Applications

Struts Resume
Security Example
Struts Menu

Set your name in
UserPreferences


Referenced by
AppFuseSupport
Articles
Articles_cn
Articles_de
Articles_pt
Articles_zh




JSPWiki v2.2.33

[RSS]


Hide Menu

AppFuseCruiseControl


Difference between version 17 and version 1:

At line 1 changed 1 line.
I tried several times to get [AppFuse] to work with [CruiseControl|http://cruisecontrol.sourceforge.net], but never got it to work. Rather than just throwing away my efforts, I figured I'd document them here in hopes that someone else might be able to figure out a solution.
It's pretty easy to setup your [AppFuse] application to work with [CruiseControl|http://cruisecontrol.sourceforge.net]. You can either download the files from this page or if you're using 1.6.1+ - they're located in the ''extras/cruisecontrol'' directory. Thanks to [Mike Clark|http://www.clarkware.com/cgi/blosxom] and [ Jared Richardson|http://www.pragmaticprogrammer.com/titles/prj/index.html] for their help getting this work.
At line 3 changed 1 line.
To setup automated builds with CruiseControl and AppFuse, you need to [download CruiseControl|http://sourceforge.net/project/showfiles.php?group_id=23523] (I used [2.2.rc3|http://prdownloads.sourceforge.net/cruisecontrol/cruisecontrol-2.2.rc3.zip?download]). Extract it to your $TOOLS_HOME directory, wherever that may be. I believe you have to build it too (with Ant).
<div class="note" style="margin: 5px">__NOTE:__ I recommend setting up CruiseControl on a Linux machine if you [have one available|http://www.clarkware.com/cgi/blosxom/2004/10/19#TheyNeedABuildMachine]
</div>
At line 5 changed 1 line.
After you've installed and built CruiseControl, create an "appfuse-cc" or similar directory next to your project directory. In my tests, I had:
To run CruiseControl on your AppFuse project, perform the following steps:
At line 7 changed 5 lines.
{{{
c:\Source
c:\Source\appfuse
c:\Source\appfuse-cc
}}}
1. [Download|http://cruisecontrol.sourceforge.net/download.html] and install CruiseControl 2.4.1. Extract it to your $TOOLS_HOME directory, wherever that may be.
At line 13 changed 1 line.
Download the following files and put them in the "appfuse-cc" directory:
2. After you've installed CruiseControl, download the following files and put them in the cruisecontrol-2.4.1 ($CC_HOME) directory.
At line 17 removed 1 line.
* [cruise.sh]
At line 19 changed 1 line.
I used Cygwin to run cruise.sh. You'll likely need to change paths in the above files to match your system.
The latest version of these files can be found [in CVS|https://appfuse.dev.java.net/source/browse/appfuse/extras/cruisecontrol] or in your project's ''extras/cruisecontrol'' directory.
At line 21 changed 1 line.
I experienced many issues in the process of trying to get this to work. You can't use the simple [&lt;ant>|http://cruisecontrol.sourceforge.net/main/configxml.html#ant] builder with AppFuse b/c it doesn't find all of the tasks (even though they're defined) in build.xml. To get around this, you have to use the [antscript attribute|http://confluence.public.thoughtworks.org/display/CC/AntScriptAttribute] - which works, but the process hangs after running all the tests.
3. Modify config.xml for your e-mail address and project name.
At line 23 changed 1 line.
So this is where I'm at, everything works from a build/test perspective, but CC won't recover after running the antscript and just hangs. If I specify a timeout - it'll hit the timeout and then publish the results as failed (even though everything succeeded).
4. Modify build.xml so it points to your CVS server and project.
5. Run "ant" in the current directory or checkout your project into the "projects".
6. Run cruisecontrol.bat (Windows) or cruisecontrol.sh (Unix).
%%note __NOTE:__ If you're using Subversion instead of CVS, [download svnant|http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=1731]. Extract the download into your ''work'' directory, delete everything but it's "lib" directory and adjust the path in build.xml accordingly.%%
I was puzzled why my HTML E-Mails didn't contain all the pretty formatting like Spring's does. Then I looked at their [latest archived one|http://article.gmane.org/gmane.comp.java.springframework.devel/6300] and noticed it looks the same on Gmane as it does in GMail. I'd recommend sending your build notifications to an e-mail account that can be read with a good HTML e-mail reader.
If you want to use CruiseControl to build your [Equinox|https://equinox.dev.java.net] project, that's in [Equinox's CVS|https://equinox.dev.java.net/source/browse/equinox/extras/cruisecontrol].
!!Setup CruiseControl Daemon
After getting all the above working, I setup CruiseControl to run as a daemon. I has some issues with getting [these instructions|http://confluence.public.thoughtworks.org/display/CC/RunningCruiseControlFromUnixInit] working, so I [pinged the mailing list|http://www.nabble.com/forum/ViewPost.jtp?post=3195390&amp;framed=y]. After a few back-and-forth e-mails, the following solution worked for me on Suse 10.
* Create an /etc/init.d/cruisecontrol script with the following script. Make sure and chmod +x /etc/init.d/cruisecontrol.
<div style="margin-left: 40px">
{{{
#!/bin/sh
#content of /opt/cruisecontrol/init script
# chkconfig: 345 99 05
# description: CruiseControl build loop (see /home/tools)
# based on http://confluence.public.thoughtworks.org/display/CC/RunningCruiseControlFromUnixInit
# adapted for multiple projects
#
# Cruise Control startup: Startup and kill script for Cruise Control
#
PATH=/sbin:/usr/sbin:/usr/bin:/bin
export PATH
NAME=cruisecontrol
DESC="CruiseControl 2.2 continuous integration build loop"
CC_USER=mraible
CC_WORK_DIR=/opt/tools/cruisecontrol
CC_INSTALL_DIR=/opt/tools/cruisecontrol
CC_DAEMON=$CC_INSTALL_DIR/cruise.sh
CC_CONFIG_FILE=$CC_WORK_DIR/config.xml
CC_LOG_FILE=$CC_WORK_DIR/cruisecontrol.log
CC_PORT=8082
CC_RMIPORT=
CC_COMMAND="$CC_DAEMON -configfile $CC_CONFIG_FILE -port $CC_PORT -rmiport $CC_RMIPORT"
# overwrite settings from default file
if [ -f /etc/default/cruisecontrol ]; then
. /etc/default/cruisecontrol
fi
test -f $CC_DAEMON || exit 0
if [ `id -u` -ne 0 ]; then
echo "Not starting/stopping $DESC, you are not root."
exit 4
fi
# PPID is read-only in my shell - GNU bash, version 2.05b.0(1)-release (i586-mandrake-linux-gnu)
PARPID=`ps -ea -o "pid ppid args" | grep -v grep | grep "${CC_DAEMON}" | sed -e 's/^ *//' -e 's/ .*//'`
if [ "${PARPID}" != "" ]
then
PID=`ps -ea -o "pid ppid args" | grep -v grep | grep java | grep "${PARPID}" | \
sed -e 's/^ *//' -e 's/ .*//'`
fi
case "$1" in
'start')
# going into the work dir allows for use of relative PATHs in the config file
cd $CC_WORK_DIR
su $CC_USER -c "$CC_COMMAND >> $CC_LOG_FILE 2>&1" & RETVAL=$?
echo "$NAME started with jmx on port ${CC_PORT}"
;;
'stop')
if [ "${PID}" != "" ]
then
kill -9 ${PID} ${PARPID}
$0 status
RETVAL=$?
else
echo "$NAME is not running"
RETVAL=1
fi
;;
'status')
# echo PARPIDs $PARPID
# echo PIDs $PID
kill -0 $PID >/dev/null 2>&1
if [ "$?" = "0" ]
then
echo $NAME \(pids $PARPID $PID\) is running
RETVAL=0
else
echo "$NAME is stopped"
RETVAL=1
fi
;;
'restart')
$0 stop && $0 start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop | status | restart }"
exit 1
;;
esac
#echo ending $0 $$....
exit 0;
}}}
</div>
That's it - you should be able to run /etc/init.d/cruisecontrol as root and CC will check for new updates every hour.

Back to AppFuseCruiseControl, or to the Page History.