Our software uses in-house written deployment software due to the complexity of the product. As part of our current QA (not dev) build process (using more in-house software) we compile the code, patch the databases, deploy the software and run a smoke test and, in some cases, automated UI tests, before the build is "passed". We are moving to TFS2010 and getting rid of the in-house build process and I would rather not have to add this process into TFS builds.
What processes do you use to ensure that the deployment is successful and reporting errors back to the development team? Should a build be classed as a failure in the event of deployment errors / smoke screen or automated UI test failures?
TFS ends it's build process when the files are placed in the drop folder it then marks that build as OK. If I am to use the same solution as we have now, either TFS build has to be extended to perform all these tasks before marking the build as a success or we have to have a mechanism to mark the build as failed after it has previously succeeded.