English 中文(简体)
What are your build and release steps? When to increment build numbers?
原标题:

I am having trouble defining and automating my build process despite simple requirements:

  1. Every build should have a unique build number.
  2. 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.

问题回答

Don t store the build number directly in your file, use the subversion revision number (or some other monotonically-increasing value, like the date/time) as your build identifier. In the past, I ve used the value of date -u +"%Y%m%d%H%M%S", as we were using CVS not SVN.

We have teams of upto 40+ developers adding code to our product. Each developer submits their change to a central location for the product. This forms an ordered list of code submissions. Scripts then take each submission and integrates it into a test build based on the last released configuration and any previous submitted changes in the current round. Unit tests are run after each code submission is compiled, also any acceptance tests added in the current round are also run. At the end of each day unit tests and regression tests are run against the evolving build.

Twice a week the list of submitted code changes is wrapped up and that becomes the a new released configuration of the product and the codebase is updated.





相关问题
Using Java to retrieve the CPU Usage for Window s Processes

I am looking for a Java solution to finding the CPU usage for a running process in Windows. After looking around the web, there seems to be little information on a solution in Java. Keep in mind, I am ...

What resources are shared between threads?

Recently, I have been asked a question in an interview what s the difference between a process and a thread. Really, I did not know the answer. I thought for a minute and gave a very weird answer. ...

Run a program from PowerShell with timeout

I ll write a script that runs a program and wait for it finished. But if the program is not finished within a specified time I want that the program is killed.

Bring window to foreground after Mutex fails

I was wondering if someone can tell me what would be the best way to bring my application to the foreground if a mutex was not able to be created for a new instance. E.g.: Application X is running ...

Limit the Number of Created Processes

I have two classes: Action class, that has a method for executing VBScript files, and Item class that contains a list of Action instances. My problem is that I want to limit the number of VBScript ...

if-statement always evaluates to TRUE

Is there any reason why this script always returns "running", regardless of whether my process is started or stopped? if ps ax | grep -v grep | grep "processName" > /dev/null then echo $"...

Python library for Linux process management [closed]

Through my web interface I would like to start/stop certain processes and determine whether a started process is still running. My existing website is Python based and running on a Linux server, so ...

热门标签