Fri, 2005-10-07 13:38 — Harry Li
In software development process, one of the things that developer is afraid of is breaking the build. Usually I do is to create another source code tree, then get the lastest code, then manually copy over changes from my working branch; finially start a release build from this test branch to verify everything is compilable. This process is very lengthy and time consuming if you have tons of code.
After I moved to a new development environment, we have this "Build Farm" environment, I think it is a very good way for developer to verify their code changes before check in the code.
The concept is that there are several of the dedicated build machines just for build and there is a centre build controller server ( it could be one of the build machines) to manage them.
The process is like this:
-Developers make changes to the code and verified code can be built in their current working branch.
-Now s/he wants to check in the code and before checking in the code, the developer run a build submit scripts ( which is written in Python), the scripts then commnunicate to the source control repository (we use Subversion) to compare it with current working branch and find out all changed files, note that for new files, you have to add them first ( don't submit it if you are using Subversion).
-Once the Python scripts figure out all changes files, it packages them and send request to the build controller with the change package. It also notify developer by email with sumary of changes.
-The build contrller gets the request and finds out one build machine in idle and forward the request to the machine. This
build machince will start a fresh offcial build except copy over the changes from change package before start the build.
-Finally the user will get notified with build results and where the build is located.
If your build process is slow, one way to improve it is to use distributed build environment. Search online with "distributed build" you may find a lot of third party commercial software.
Comments
Cool use of distributed computing...
Nice post!