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 2:

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.
To begin, you'll need to create a "logs/appfuse" directory in the "appfuse-cc" directory and you'll also need to run "ant" to run everything manually once. I'd love to automate these steps, but I couldn't figure out how.
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 used Cygwin to run cruise.sh. You'll likely need to change paths in the above files to match your system.
3. Modify config.xml for your e-mail address and project name.
At line 23 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. It just sits at:
4. Modify build.xml so it points to your CVS server and project.
At line 25 changed 2 lines.
{{{BUILD SUCCESSFUL
Total time: 3 minutes 39 seconds}}}
5. Run "ant" in the current directory or checkout your project into the "projects".
At line 28 changed 1 line.
... for hours ...
6. Run cruisecontrol.bat (Windows) or cruisecontrol.sh (Unix).
At line 30 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).
%%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.