views:

94

answers:

2

Hi everyone.

About 2 months ago I overtook building proccess in current company. Even though I don't have much knowledge of it, I was the only with enough time, so I didn't have much choice.

Situation is not that good, and I would like to do following:

  1. Labeling files in SourceSafe with version (example ProjectName PV 1.2)
  2. GetFiles from SourceSafe to specific directory
  3. Build vb6/c++/c# projects(yes, there are all kinds of them)
  4. Build InstallShield setups

This is for now partly done using batch scripts(one for labeling and getting, one for building, etc..). So when building start I pretty much have babysit it. Good part of this code could be reused.

Any recommendations on how to do it better? One big problem is whole bunch of dependencies between projects. Also labeling has to increment version and if necessary change PV to EV.

I would like to minimize user interaction as much as possible. One click on one build script(Spolsky is god) and all is done, no need to increment version, to set where to get files and similar stuff.

Is the batch scripting best way to go? Should I do some functionality with msbuild. Are there any other options?

Specific code is not need, for now I just need a way how to improve it, even though it wouldn't hurt.

Tnx, Marko

+1  A: 

Sounds like you want a continuous integration solution, like CC.Net. It has configuration options to do all the things you want and a great community to answer questions.

Also, batch scripting is probably not a good option. Sophisticated build and integration tools will let you feed parameters into the build and create different builds for different environments (test, production, etc.). Batch scripting will involve a lot of hand-coding and glue.

brien
+1  A: 

Since you already have a build system (even though some of it currently "manual"), whatever you do, don't start over from scratch.

(1) Make sure you have a test machine (or Virtual Machine) on which to work. Thus you can make changes and improvements without having to worry about breaking anything.

(2) Put all of your build scripts and tools in version control, not just the source code. Then as you make changes, see if they work. If they do, then save them to version control. If they don't, then roll them back.

(3) Choose one area to work on at a time. Don't try to do everything at once. Going from a lot of manual work to "one-click" will take time no matter what build system you're working with.

molecules