TFS: How to cache framework builds to relieve build process?
I've recently been assigned to a release engineering team in an effort to make our build process more managable. In our product's history, we simply built everything in our version control repository with every build since it wasn't that much of a timesink to do so. This includes third-party products for which we have source (including Enterprise Library, for example), our own in-house framework code, and finally the product itself. After several years of steady product growth, however, this has become a very cumbersome process.
That said, we'd like to establish a sort of tiered build system wherein only the products (which change every day) are built on a daily basis, while our framework code (which changes much less often) and our thirdparty code (almost never) are built only when they change. We have a symbol & source server set up to facilitate debugging code such as our framework libraries that aren't newly built which each version, but we're still figuring out how to facilitate this. For the record, we use TFVC for source control.
My questions are these: what kinds of practices are used for this kind of thing? Do we set up separate team projects for each "tier" of this build (i.e. team project for thirdparty, for framework, for products) and branch them into one another? Do we ever check in the build products of one tier int开发者_开发问答o the next to ensure dependencies resolve? If not, where do the binaries live? Would these requirements demand that we use the GAC?
Finally, if there is any guidance about this kind of thing I've love to do some reading; but, as I'm new to build/release engineering, I don't yet know where to look.
Thanks!
To answer your last question first, there's an excellent book from Microsoft about build configuration and management.
With regards to your first question: We handle our dependencies separately. We have a build that compiles our framework. We have another build that compiles our own projects.
However, as a part of the process of our second build, we install the setup from our framework build on the buildmachine before compiling our own project.
This way, we can release our framework separately from our projects. Our projects can determine (by modifying the build configuration) when to start using a new version.
The project and the framework have their own TFS projects.
精彩评论