As I mentioned in my previous post, I've started working with ANT some recently. Like some of you, I'm sure, my foray into the world of ANT came out of necessity. As my duties here at work increased, I began to take on more and more responsibility in terms of managing code bases, sites, and servers. We've got 15 ColdFusion sites spread across 10 servers, and then our main site sits on a cluster of 8 CF servers. Factor in our testing and staging environment as well, and it's safe to say we've got a lot of code in a lot of places.
I first started using ANT as a simple means for me to copy files from one directory to another. But, once I started learning some of the capabilities of ANT, it quickly grew into a tool that automates a lot of redundant tasks for me. For example, I have one build process that does the following when moving code to our staging server:
- compresses any .js or .css files that are going up (YUI Compressor)
- compresses any .png files that are going up. (pngtastic)
- ftps the files to our staging server
- commits the changed files to a "staging" branch in SVN
- creates a tag of the "staging" branch in SVN
So, yeah, ANT has become a huge time saver for me. I also have it doing things like pulling down backup copies of sites and storing them as zip files on a network drive, and connecting to SVN and exporting builds directly to testing servers. The funny thing is, I feel like I'm just scratching the surface and I find myself looking for new things that I can implement with ANT, which is the main reason for this blog post. I want to find out what your build processes are like. It doesn't even have to be ANT, if you use something else I'd love to hear about it.
I'm curious to see what others are doing, and I have a lot of questions for those smarter than me. What are some cool things that you're doing in your builds? Do you integrate things like unit testing or var scope checking? When working with large code bases, do you export the entire thing or just the changed files? What are some of the other tools you use? I've heard about Jenkins and Hudson, but haven't really looked into them.
So, as I said, I'd love to hear about what you're doing. What's in your build process?