I am having trouble defining and automating my build process despite simple requirements:
- Every build should have a unique build number.
- Every tagged release should be reproducible
What I have:
- A C++, Red Hat Enterprise Linux 5.x, Subversion development environment.
- A build machine ( actually a virtual machine )
- A version.h file with #defines for major, minor, and buildnumber.
- A script for incrementing the version.h buildnumber.
- A rpmbuild spec file that exports the tagged Subversion source, builds, and makes the rpm installer packages.
Questions:
- Assuming multiple developers per project, when should the build number be incremented and version.h file be checked-in? The build machine? Some sort of Subversion hook? Pre-build or post-build?
Thanks in advance for those willing to take the time to share their experience with build processes.
-Ed
Linux newbie. Former Windows C++/.NET developer.
Why not modify your build process so that it grabs the latest revision number from the repository and uses that as the build number?
Assuming svn incorporates all of the elements that go into a build of your product, that should give you a unique number per potential differing build, and make it easy to match up what the state of the codebase was at the time of building. If there are other elements that can vary with time, you could add another item concatenated to the revision number – perhaps a date/time value.
You’ll never have to worry about manually incrementing it, because each time a developer commits they’ll increment the revision number automatically.