TeamCity with Multiple Development Environments
For our enterprise application, we have tiered streams in AccuRev (developers promote to the Integration stream, which promot开发者_如何学编程es to the Quality Assurance stream, which promotes to the Production stream). Each major component of the application has its own tiered set of streams (e.g.: there's a Windows Client Integration stream, a Windows Client Quality Assurance stream, a Data Access Services Integration stream, a Data Access Services Quality Assurance stream, etc.).
I'm in charge of setting up automated builds for the entire application in TeamCity. So far, I've created a separate build configuration for each of the major components (e.g.: a Windows Client build configuration). Right now these configurations pull from the aforementioned Integration streams. It works beautifully.
However, what we would like to do is switch the build configurations to pull from different tiers. In other words, if we want to run an "Integration" build of the Windows Client, the build configuration will pull from the Windows Client Integration stream. In the case of a Quality Assurance build, however, it will pull from the Quality Assurance stream.
As far as I can tell, the only way to accomplish this would be to create a separate build configuration for each tier (e.g.: "Windows Client Build Configuration (Quality Assurance)").
Is there an easier way?
Or is there something fundamentally wrong with the way I've set up the automated builds that's preventing me from accomplishing this?
I haven't used AccuRev, but I'm assuming that streams are equivalent to branches in other version control systems.
I think you are on the right track here. The advantage of having separate build configurations for each tier/platform is that once they are all set up, you can build any of them at the click of a button, with no further configuration. You could do it without separate build configurations for each tier, but then you would have to go messing around with the build configuration or custom builds with specific properties set (it is pretty easy to run custom builds straight from the TeamCity projects page though!) every time you want to make a build.
What I would probably do is set up separate build configurations for each platform/tier like you have done, and base them all off of a single template, using configuration parameters to handle the setting of the platform and the tier. This gives you the benefits of individual configurations (one-click building, separate versioning if you want, etc.) while keeping the complexity and maintenance requirements low by isolating the configuration to a template.
精彩评论