Continuum vs. CruiseControl for Maven 2
I spent some time this past weekend getting automated builds setup for AppFuse 2. Since the project now uses Maven 2, I figured I'd give Continuum a try. I pointed it at my pom.xml in SVN and expected everything to work out-of-the-box. No dice. It seems that Continuum reads the artifactIds instead of the module names for sub-project resolution. To workaround this issue, I'd basically have to rename all my sub-projects to have an "appfuse-" prefix. Doesn't that violate the whole DRY principle? Sure, there's projects that do this, but there's others that don't.
Since I didn't feel like renaming the modules/directories in SVN, I gave CruiseControl a try instead. It took a bit of elbow grease on my part, but I ended up with a config.xml file that works splendidly. It seems somewhat ironic to me that the CruiseControl works better with Maven 2 than Continuum does.
Posted by afsina on September 05, 2006 at 10:39 PM MDT #
Care to back up your claim with some reasons? Everytime I post something about CruiseControl, I get comments like yours - often with no reasons to switch. If CruiseControl works for me, what's wrong with using it?
Posted by Matt Raible on September 05, 2006 at 10:42 PM MDT #
Posted by Brett Porter on September 05, 2006 at 11:12 PM MDT #
Matt, I have been stumbling down the same road now since late last year...and when I finally got Continuum to build my project successfully (after a lot of command line hacking), I don't dare touch it because at this point I have no idea what I did to get it imported and building regularly.
I have provided feedback on the Continuum issue tracker, but the ensuing release seems just as frustrating as its predecessor. Hats off to the maven team for making it look pretty, but after all, it is a build system, and where it really needs to shine is getting the builds right.
I will throw another curveball your way that will be sure to bring Continuum to its knees. Try to setup multiple branches so that they are all building on a regular schedule. Good luck figuring out how to kick off a manual build. I might sound frustrated, but I am...because I don't like it when software is called final when it isn't. Continuum is beta software in my opinion. Don't get me wrong, it is going to be great, it just isn't yet.
Posted by Dan Allen on September 06, 2006 at 02:40 AM MDT #
If you looking for simplest solution for your maven2 project then I would recommend you to try Cerberus tool.
Well, it is written on Ruby but It works for Maven2 projects also. It is less resource exacting cause it starts from scheduler (and there is no Ruby process most of the time).
I have never use it for Maven2 - but I use it for my RubyOnRails projects and am very happy with it. Cerberus gives me exactly what I need from Continuous Integration tool.
Posted by Jean Grund on September 06, 2006 at 07:41 AM MDT #
Posted by afsina on September 06, 2006 at 11:56 AM MDT #
Posted by Ahmed Mohombe on September 06, 2006 at 12:00 PM MDT #
Posted by Matt W on September 06, 2006 at 03:07 PM MDT #
Posted by hparra on September 07, 2006 at 04:06 AM MDT #
Since then I've tried Luntbuild and was thoroughly impressed. We've been running it for half a year now and we've never felt the need to evaluate another solution. Give it a try!
Posted by GB on September 07, 2006 at 08:16 AM MDT #
Posted by Eduardo Rocha on September 08, 2006 at 04:14 AM MDT #
Posted by Anders on September 08, 2006 at 03:20 PM MDT #
Posted by Anatol Pomozov on September 13, 2006 at 12:41 PM MDT #
Posted by Carlos Sanchez on September 15, 2006 at 11:19 PM MDT #
Posted by ppl on September 27, 2006 at 08:59 PM MDT #
Posted by Matt Raible on September 27, 2006 at 09:45 PM MDT #
Posted by ppl on September 27, 2006 at 11:37 PM MDT #
Thanks for the great postings about your Cruise Control and Maven2 integration attempts.
I am curious, did you consider using the maven scm:bootstrap task?
I am pretty sure with that, you could do a true, clean build from source code control. Pat
Posted by Pat McNerthney on February 20, 2007 at 03:29 AM MST #
Posted by Matt Raible on February 20, 2007 at 03:42 AM MST #
It will be more involved than just that. I am currently working on reworking our CC build process from ant to maven and have a theory I am working on. I am heading towards using a CC specific pom file to drive the build, exactly like is done with ant.
I'll post something here if I get it working.
Pat
Posted by Pat McNerthney on February 20, 2007 at 05:41 AM MST #
Posted by Niki on July 30, 2007 at 07:59 AM MDT #
I had a VERY bad experience with Continuum.
1) It claimed support for ClearCase, but could not properly create a view. During release was trying to do things that are not allowed (create a view within view). A clean build was destroying a view (deleting view.dat)
2) It had many minor and not-so-minor bugs. It had a candy GUI and nothing more...
3) It lacked the documentation - I was constantly struggling with things - how to deploy on Tomcat? How to connect to PostgreSQL? How to create UCM view? How to customize the build for my project?
4)It's database schema was awful
5) It had nasty performance problems when I added more users and more projects.
... and so on...
In short, I had to constantly nurse it. I had to develop scripts to adjust and monitor it. I hated that application.
One day I could not stand it any more.
In 3 hours I wrote a set of bash scripts that did what I wanted continuum to do: build, test, deploy, deploy site, send notifications, display results on a web page.
Those scripts still work today. They never broke. After a few days all developers abandoned Continuum. A month later I removed it from the build machine. I regret the time I lost by trying it out.
Posted by David on January 23, 2008 at 10:02 PM MST #
Posted by Carsten on February 01, 2008 at 01:27 PM MST #
First - I use Maven2. Second - I've used both CruiseControl and Contiuum.
CruiseControl: It is definately a headache getting the config file setup right, and the GUI tools help, but with the lack of good 'default' or convential setup for what you are trying to build (Maven2 build with java for instance), you can spend a lot of time researching what are some good defaults. But, once you get there, it works great. Also, if you are looking for a central automated build system, but have multiple build environments (or, more likely, you know you will be changing build systems every 3 years or so) -- CruiseControl is a good long-term investment.
Contiuum: Beta quality 'final', yes. In fact, I'm still on 1.0.3 because I'm afraid to upgrade to the newer versions. The install process needs some cleanup (and I have posted a couple gotchas back to Contiuum), but once it is actually running for your environment it is very quick to add new projects. So, if you have a lot of Maven2 projects and/or in an environment with a lot of small projects, Contiuum works great. I was hoping it would be a good, long term build tool, but I'm just not convinced yet.
As a side note, the 'Maestro' install with contiuum makes the installation process easier.
My two coppers -- reading through a lot of comments of various build system likes/dislikes without Maven2 experience, which Maven2 was Matt's focus :-P
Posted by dhartford on February 07, 2008 at 02:04 PM MST #
My biggest issue with Maven is that it never works. I can try maven X or maven x or maven x.x and I can never seem to find the right combination of project that I am compiling with the maven version that project supports. Yes I know I know, I am a big dumb idiot and I have no hope of ever seeing the open source light. Yet however, I also am a person who can make decisions, and if it takes me longer than an hour to install some hard to configure open source project, I will look elsewhere. 10 hours of my time = team server.
Wasn't maven supposed to make all that stuff easier?
How about this, as soon as I start seeing maven built releases become maven version agnostic, I will give maven a try, but for right now all this maven bs is frankly just a pain in my ass. I want the control that ant gives me because I know it won't break if I give it to a new developer. An ant script is an ant script no matter the version (negating some obscure ubernerd version that was in RC.00001).
Anyways, Cruise Control is great for what it is designed to do, repeatedly build an ant script. I have yet to get maven to perform its task at any rating more than adequate, while I have frequently wanted to take Ant out for dinner with hopes of talking it into some late night walks by the bay.
Posted by Clint Hanson on April 01, 2008 at 07:11 AM MDT #
Hello,
Over the past few years I have been getting more return on daily and even continuous builds. Right now my favorite build system is Luntbuild. I have used Cruise Control.NET, not CC/Java. Finding the .net GUI, http://cc-config.sourceforge.net/index.html, helped get CC running. Luntbuild has a tightly linked web interface. Any time I can change over to Luntbuild I will.
Why you may ask? CruiseControl (Java/.NET) setup and maintenance is never easy. Once it works, teams are defensive about the time spent to do so. From changing the logger to publishing unit tests, the team is changing xml files. These may or may not be in your VCS/SCM. Since most people don't understand XML, it is not clear what the actual build process does.
What we should strive for is using the same script that the developers use. I do not like the "It worked on my machine" problem. If both th developer and Luntbuild are using the same ant file, you reduce the machine specific issues.
Luntbuild generally will let you run your scripts right away, but you will soon find that you want to change them slightly to take advantage of the poorly documented variables luntbuild provides for labels and such. They always could provide more!Finally, I got a script not set up for CI builds to build continually in about 30 minutes in Luntbuild. I have never done that in CruiseControl. Just remember to have the jar app in your path.
So, while I have heard good things about many tools I don't use. Luntbuild does what it does well. I would say Luntbuild is better than the rest!
Posted by Peter Hecht on April 30, 2008 at 03:56 AM MDT #
Thanks for posting the example of embedding Maven 2 properties in the CC goal. >>"clean scm:update install deploy -DperformRelease=true" <<
We are currently using CC 2.4.1 (yes very old) and Maven 2.0.10.
I had a project where I had used the CC flags to pass properties to Maven, but this stopped working with Maven 2.0.10. So, I was trying to figure out if I needed to upgrade CC. Fortunately, I found this information, and was able to get things working.
We have been using Cruise Control for four years. I originally looked at a number of build tools: Anthill, Anthill Pro, Cruise Control and I can't remember if was able to install Luntbuild. The major criteria for picking a product was "find something for 'free'". I used this website as good resource for finding out about the CI products that were available in 2006. CI Feature Matrix
The CC build process executes an ant script to update the files from CVS then runs Maven2 to build the project.
I like the fact that I was able to use the Entity in the Cruise Control Config file to bring in other project specific configuration files. This way each project has its own configuration file in the project directory. (Well actually four as there is one for each environment: dev, test, qa, and prod. I opted to have separate files instead of using branched files with CVS.)
I also created a groovy script to automate the "adding of a new project" to the Cruise Control configuration file. (No more hand editing of the .xml files)
Bottom-line: Cruise Control has done what we needed it to do. It is like Ron Popeil says: "Set it and forget it." I know we are not using every possible feature, but then I hardly use any of the features of a Word Processor.
Posted by Mike Farnham on January 21, 2010 at 02:07 AM MST #
Wow... nice rants. For those that made insightful comments, thank you. For the others, I hope you felt better after you vented.
We've been using continuum and archiva for more than a couple years now and these tools have worked well for us (70+ projects - 10s of users). The general level of quality has not always been tip-top, but it takes a different approach than many of the other tools. For instance, it knows about the internals of your maven projects, allowing the tool to do some interesting things such as configuring notifiers (and other things) right from the project meta data. This has allowed us to support some interesting work flows not readily possible with other tools. To be fair, at times this also has been the source of reliability issues.
Where we hit issues with continuum, we decided to submit patches to solve our issues and contribute back to the project. I understand many people are not interested in having that relationship with their tools. However, we felt it made sense strategically; gaining an understanding of our supporting development tools and backing our investment will help ensure they will be available for years to come.
Posted by Brent Atkinson on April 14, 2010 at 10:52 PM MDT #