We've had a few people ask how FinalBuilder and TFS2010 can be used together. This article will outline the main scenarios, but given the flexibility of both products I'm sure there's many other combinations.
In brief, the scenarios are:
- TFS as the Version Control System (VCS) and Continuous Integration (CI) server and build process; FinalBuilder as the post-build process
- TFS as the VCS and CI server; FinalBuilder as the build and post-build process
- TFS as the VCS; FinalBuilder Server as the CI server; FinalBuilder as the build and post-build process
In all scenarios TFS work items and reports can be updated, test results recorded etc.
Why use FinalBuilder?
First up, why would you consider FinalBuilder and TFS at all? TFS has a customisable build process, so why not just use that? While that's certainly an option, FinalBuilder has built a business out of simplifying the construction of the build process. Customising a TFS workflow can be quite involved, especially if you have non .NET components to build. FinalBuilder allows you to create a very flexible, easy to maintain soup-to-nuts build process, encompassing code checkout, compilation (of many languages), running of automated test harnesses, and deployment. Plus a host of other actions which you can read more about.
If you've tried to customise the TFS workflow and found it frustrating, or if you plan on doing something more complex than "build my .NET solution", FinalBuilder may be able to make things easier.
So that's the why, lets look at the how.
In this instance, TFS is doing the vast majority of the work: triggering the build, checking out code from source control, running the build, running and recording test results. FinalBuilder is used at the very end of the 'standard' TFS workflow to perform actions such as deployment.
This scenario makes sense if you have an existing TFS build process that you would like to customise, but want something easier to work with than Workflow Foundation.
Here, TFS is still managing the running of the build process, but is using FinalBuilder to perform the build and post-build actions. Results from the build and any automated tests that are run by FinalBuilder will appear in TFS reports. The log from FinalBuilder is also added to the TFS build log.
This scenario makes sense if your build process is complex, for example containing non-.NET applications. At VSoft, our FinalBuilder Server product contains both .NET and Delphi components. Customising a TFS workflow to call out to the Delphi compiler and properly configuring the Delphi build would not be easy. With FinalBuilder, it's relatively simple.
The advantage of using TFS as the CI server is that it allows you to run multiple build agents. FinalBuilder Server (currently!) only runs a single build agent. If you have a lot of time-consuming resource intensive builds, multiple build agents may be useful.
Now we're just using TFS as the VCS and for task tracking, reporting etc. FinalBuilder Server manages the running of builds and as with the second scenario, FinalBuilder performs the build and post-build process.
While TFS has the advantage of multiple build agents, FinalBuilder Server is more flexible in how builds are triggered. Builds can be triggered by a variety of conditions; and with version 7 this includes the ability to write a custom Python or Powershell script, giving you ultimate control.
This scenario makes sense if you need more flexibility in how builds are triggered, or if you're looking at moving off TFS as your VCS in the future. After moving your code to a different VCS, only minor changes would need to be made to the FinalBuilder and FinalBuilder Server projects to use the new repository, whereas if you were using TFS as your CI and build process, you would need to establish the whole build environment from scratch.
FinalBuilder Server also has an easy to use web interface for monitoring and interacting with builds. This can allow people in, or out, of the build team to easily monitor build metrics.
That's a short overview of the main ways the two products interrelate. You can also read the step-by-step tutorial that covers setting up scenario 2.
If you have any more detailed questions, please contact us.