Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What Tools Do You Recommend To Auto-Build Your Application? [closed]

As recently as several years ago, the developers actually made the builds that went to clients. This was obviously a disaster for reasons too numerous to list.

Then when we started to learn the errors of our ways, we looked for a way to auto-build the entire application on a dedicated build machine. The culture at that time was very averse to bringing in outside tools, so we built our own autobuild system by writing a VB app.

This worked fine for a while, until the project's structure started to change, new projects were added, and we needed to build the application in different ways. Then then weaknesses of our hand-rolled autobuilder became apparent and, over time, increasingly onerous. This disease has progressed now to the point where QA (who owns our build process) can't even maintain the autobuilder because it requires more and more programming skill. Every time we add a project or change something in an existing project, it consumes more developer time just to make it work. There have been days when we were unable to produce a build because the system was broken.

I'm now in a position where I can change this process, and I'm looking to scrap the entire system and put something else in it's place. My goals are:

  • Have an autobuild system that can run with zero human interaction at a specific time every day. It should be able to gather all the source code, compile all the apps, create the setups, put the finished products on a network share, and possibly trigger the automated testing system to kick in (we use QTP).
  • The autobuild system should be flexible enough to easily adapt to changes in the project without rrequiring a major overhaul.
  • It should be simple enough so that QA can own the system and not require developer resources to make changes to how builds are made.

What are your experiences? Can you recommend an autobuild system? Should I have different goals?

like image 247
John Dibling Avatar asked Oct 10 '08 12:10

John Dibling


2 Answers

I'm currently using CruiseControl integrated with Ant to control project builds. This allows flexibility of build schedules and means you can automate the entire build process fairly easily using Ant scripts. Also, during defect fixing periods you can have CruiseControl set up to watch for source control submissions instead of time periods and build when these occur. This allows developers very quick feedback on defect fixes.

like image 79
workmad3 Avatar answered Oct 08 '22 08:10

workmad3


I use FinalBuilder and FinalBuilder Server for nightly builds. It's a bit buggy at times, but if you think it through it's quite easy to create extensible projects that can build X project type, build it's database from change scripts and deploy it to a testing server.

It can also handle all kinds of wierd and wonderful things like ZIPing a nightly build and uploading it to an FTP or creating ISO images automatically.

like image 22
Steven Robbins Avatar answered Oct 08 '22 08:10

Steven Robbins