One of my job responsibilities is building our main project for internal release and for customer release. I’ve semi-automated some portions of the process, but I still have an extensive checklist I have to go through with each build of our n-tier architecture. It has so many steps that I print out a copy with each build and check off each step as I complete it. I am often interrupted by other emergencies, so I need the paper to remind myself where I am in the process.
Here’s a genericized version of my checklist. I’ve left out SourceSafe activities. Many of these steps are wrapped by a checkout and check in process. I’m also applying a label for each build.
- Follow up on any currently checked out modules in case the developer forgot to check it in.
- Update the build-date which is hard-coded on one of the forms.
- Update the main project version.
- Update version of a DLL project that is kept in sync with the main project version.
- Share new forms into the main project.
- Copy updated help files to the main project folder.
- Get latest of all code modules (middle tier, custom controls, DLLs, and the main project).
- Remove the COM+ components.
- Build the middle tier components with a batch file.
- Add the COM+ components.
- Build controls and DLLs with a batch file.
- Build the main project.
- Test basic functionality of the EXE.
- Create merge module of related controls and DLLs with Visual Studio Installer.
- Create MSI of the main project with Visual Studio Installer.
- Edit MSI with Orca.
- Kick off testers and deploy middle tier and main project installation.
This takes about 2 1/2 hours with each build. I’m not able to do much else during this process because there’s only a few steps that take a long time (the make of the EXE and the creation of the main MSI module). In parallel, another devloper prepares database updating scripts that are run during the deployment phase.
Am I in the minority with having a build process this complicated that is done by hand? Some of this has been automated, but it sure seems like I could automate nearly everything in this build. The things that I can’t automate I would be comfortable with moving out of the build process (such as sharing new forms — the developers can do that as they create them) or eliminating (such as the “test” of the EXE — it hasn’t failed in over a year).
I’ve just run across a tool that looks interesting. It’s called Visual Build and is made by Kinook Software. I’m thinking about downloading this a few days before our next internal build and trying it out. I wonder if it can really make things as easy as it claims.
I’ll post more when I try it out.