There are many Automated Build Tools available, some are free, some are very expensive and there are lots of others in between. Each tool is different: different architecture, different features, different user interface, etc. Before you decide on a tool to help you with your software builds, there are many things you need to consider; we have listed five of the most important ones below:
1. Choose a tool you can trust and is well supported.
Your build tool is going to be building the software which will be sent to your customers, you simply have to be able to trust it. Make sure the build tool has been around for some time and that there are high profile customers using the software; this is your assurance that the build engine is robust. When something does go wrong, either a bug or a usability issue, how and where do you get support? Does the tool vendor offer free support for the life of the product? Is there a community forum where you can discuss ideas, offer suggestions and report bugs? How quickly does the vendor respond to bug reports?
2. The tool should support most or all of the tools you currently use and may use in the future.
Let's face it, you're not looking for a tool that is as basic as a batch file. The build tool needs to hide the complexity of the tools which you need to automate; for example your compilers, install builders, version control systems, etc. Do you really care what command line parameters you need to use for your compiler? Of course not, it's much easier to fill in a field called "Project File" and click a checkbox called "Include version information in project". Also, consider what tools you'll be using in the future. Maybe you're thinking of moving to a .NET compiler, maybe to TeamSystem or some other Version Control System. Also, how easy is it to pass information from one step in your build process to another? Does it make it easy to store, load, manipulate and apply version information? Can you download a 30 day fully functional evaluation version? And is there a money back guarantee to back up the vendors claims?
3. Free will not necessarily be cheaper over the long term.
We hear from lots of users of NAnt and ANT that are ready to move on. Yes, they are open source products (ie. free) but they typically take a lot longer to get to grips with - remember that your time isn't free. If you're sick of paying the angle bracket tax, look for a tool which makes it easy for you to create, modify, debug and run your builds. Also consider that someone in the future may take over the builds; how easy will it be for a new person to learn the software?
4. The user interface is easy to use and very powerful.
This has already been touched on in some of the other points - but the user interface is very important. Look for a UI which is fast, rich, easy to use and modern. Does the UI support Drag&Drop? Does the UI provide custom editors for each of the steps in the build process? Are there debugging aids like variable watches, hierarchical logging, pause, run current action, etc? Is it easy to find information in the log (eg. find all steps in error), and can you do a find and replace in your build steps? For example, you may want change all references to C:\Projects to C:\Build\Projects in all steps in your entire build process. Can you easily break up your build into smaller, easier to manage parts? And is there an easy way to see the progress of the build process while the build is running?
5. The essential feature set of any build tool.
We have been doing builds for quite some time, and with constant feedback from our customers we have a pretty good idea what features are essential in a build tool:
- A great user interface (see point 4)
- Logging to a database engine - the only reliable way to store and retrieve log information
- Running build steps in parallel - essential for reducing the time taken to run your builds
- Support for most tools used by software developers (see point 2)
- An easy way to add new functionality to the build engine (especially if custom inhouse tools need to be automated)
- Flexible flow control, for example if/then/else, switch/case, for/while loops
- Error handling steps like try/except/finally and a global catchall for any unhandled errors
FinalBuilder fulfills all these criteria and a lot more. Please download the 30-day trial now, and see for yourself!