Comparing Microsoft Team Foundation Server and Collection of Open Source Tools
Over the past few months I've been formalizing my deployment process through the use of configuration management tools. I have what I know feel is a nice environment for doing continuous integration builds, a file is checked the file in, and out pops a build. Using branching in the TFS Source Control allows for promoting changes from a development to staging as this happens the continuous integration environment picks up that change to the staging branch and deploys the new build to our User Acceptance environment.
Now what I want to do is associate work items completed with the actual builds, since Software Logistics has minimal support staff, this needs to be automated as much as possible. Basically the flow of a work item should be as follows:
- End User/Manager enters a bug/task, for the sake of this work flow, let's say this automatically gets assigned to the person responsible for closing the work item.
- The person responsible for closing the work item should be notified via email
- At some point we need to figure out scheduling
- The developer works on the work item
- Checks in the source code
- This kicks off a build
- An RSS Item is created by the build process, included within this RSS Item is the Work Items completed since the last build.
- Once the manager decides it's time to deploy the changes, they promote the changes to the staging or user acceptance environment
- This kicks off an additional build, we know the last time the build took place so now we want to associate work items with this build. This should also be in the form of an RSS entry the client can subscribe to.
- Included in this RSS entry is the build that can be applied to the production enviornment.
For now, I've pretty much settled on using the Version Control software that is built in to TFS and Visual Studio 2005 for my IDE, everything else is up in the air. In addition, this environment should be peiced together with as little new custom projects as possible.
The two alternatives for putting this environment together are:
- Fully moving to TFS to manage all of this
- Peice together a build environment that leverages open source tools.
Microsoft Team Foundation Server Environment
What is really nice about this is that it is an all encompassing solution.
The following features are built in:
- Work Item Tracking (very customizable)
- Source Control
- MS Build Server