I have put some more effort into the Build Deploy Test build xaml referenced in earlier posts.
There are a couple of bug fixes around failing the build if one of the deployment scripts return a non 0 value.
The main enhancement is using Build Quality to drive the promotion process of a build.
The target is this. A CI build compiles the product and runs unit tests. A BVT build (on a rolling schedule) picks up the last good CI build, deploys to a Dev server and then runs some automated BVT automated tests. (Think Integration, maybe some basic Acceptance tests.) If these pass then the original CI build quality is updated to BVT Tests pass.
Another build (maybe overnight) picks up the last good CI Build with a quality of BVT Tests pass and then deploys to a Test Server. This build runs a full automated suite. If these all pass then the build quality is updated to Tests Pass.
Finally another manual build could then be used to deploy that CI build to a manual exploratory environment to let the manual testers at it. This way we can guarantee that the environment used by the manual testers is high quality and not a waste of their time. The picture below illustrates part of this process.
Changing the build process
In order to support the scenario above a few changes have been made to the xaml. The parameters can now be seen below.
The new parameters are as follows.
Build Quality Filter – This is used to pick up a CI build of a certain quality. If we are the BVT build then this will be blank. If we are the overnight build then this will be “BVT Pass.” If we are the final manual build then this will be “Tests Pass”
Update Build Quality – This is the quality to update the CI build to, following a successful test run. e.g. if we are the BVT build then this is “BVT Tests Pass” etc.
I have included the xaml file and code here. The code includes the build xaml and some custom activities. Make sure to put these into the area of Source Control that your build controller looks to for custom code. More details on that can be found in my previous blog.