FBS project to CI configurations?

We have been using FBS for a few years and have automated a lot of things with in. I'm looking at moving our build process over to CI but had some questions on how to set this up..

We have a few branches in TFS that get built based on check-ins. $/tfs/MAIN $/tfs/DEV $/tfs/HF etc

In FBS we have one build project with triggers that simply sets a branch variable which is then used in the paths: c:\source\%branch%\solution.sln etc

I'm struggling to setup the same thing in CI... 

Do we need to setup a repo and/or project for each branch? how can I pull just the branch that has the checked in changes? 

I don't want to build projects/configuration for each branch. I don't want to pull down the full repo on each check in (each branch is 3-6 gb, the full repo is 30+ gb)

can this be done in CI? can you please provide some steps/ideas on how to set this up? 

I look forward to moving to CI if we can get this working.

Thanks!

Hi Jason

At the moment we don’t support branches for TFS, so each branch needs to be configured as a seperate repository in Continua. I have asked one of our devs to spend a few hours today looking at TFS again to see if we can do anything about that.


One of the issues that I remember from when we implemented the TFS support was finding a way to detect changes from multiple branches without the user having to specify the branches. The TFS api’s do not make it easy to identify branches. Hopefully we can find a way, however I cannot make any promises at this stage.

this was a very simple thing to do in FBS. our FB project has a branch variable and the TFS trigger sets the branch based on the trigger that fired. in the project we just use the TFS get command like this: $/tfs/%branch% and that was about it. 

CI's lack of control of TFS operations seems like a major missing feature. 

Maybe I don't understand the concept of repos in CI but it seems much more limited.


FBServer and Continua are very different, FBServer doesn’t manage the source code, it just detects changes and starts a build, you still have to get the source to the right place etc. Continua actually gets and caches the source, manages getting the source (the correct version of) to the agents. With DAG based systems like git and mercurial that’s easy, branches are easy to work with… svn was a bit more difficult. TFS’s branch concepts make it somewhat more difficult. We did some investigation into this today and it might be possible to handle folder branching (not file branching though), there’s at least a week’s work before we will know for sure. One issue that does concern us is performance… doing anything with TFS is slow.

I’ll post back here once we have some progress on this, hopefully mid next week.

Thank you for the quick response! I keep an eye out for an updates. Thanks again!

Hi Jason,

We uploaded a new build of Continua CI  (v1.0.0.2280) yesterday which supports TFS branches. This is available from the Continua CI downloads page.