TFS2010 Solutions to build

Hi

Is it posible to pass a list of solutions to build to Finlabuilder? I can see you just have added support for custom arguments, but it is not really usefull as you can't see args names in TFS which makes it hard to maintain for others.

The build definition can't even validate if you don't specify the sln list to tfs, so why not pass it to Finalbuilder? The sames goes for buildflavor and buildplatform, why do you need to give this info to tfs in section 1 in the process and again in section 4 to Finalbuilder.

Best regards...

Hi Christian,
Thanks for the feedback. You raise a couple of good points, particularly about needing to specify Flavor and Platform twice and passing the solution name. I’ll have a look and see if it’s possible to clean that up.

Regarding multiple solutions - my feeling is that it won’t be particularly easy given the way we pass information between TFS and FinalBuilder. I’ll have a look and see what I can do though.

Ben

Hi Christian,
Can you please download the latest test build from: https://www.finalbuilder.com/downloads/finalbuilder/aex6/FB700_754.exe

Flavor and Platform are now derived from the ‘section 1’ info, and the path to the solution file is now accessible via the Get Team Foundation Build Parameters action. Please let me know if you find any issues.

Properly handling multiple solutions is not a small amount of work (not much is with TFS). I’ve added it to our feature request list and hopefully we’ll get time to look at it in the near future.

Cheers,

Ben

Hi Ben

Thanks, the integration just became a bit more manageable.

Regarding multiple solutions - In TFS2008 you could set finalbulder variables like solutions_to_build=Portal.sln,App.sln and then just itegrate over it in Finalbuilder. Why not just parse the sln list from section1 to Finalbuilder ?

We could do something like that fairly easily: you’d end up with a variable containing list of solution paths, which you could iterate over using the List Iterator action.

However we wouldn’t be able to pass separate flavor/platform values for each solution, which may be a bit counter-intuitive given that the TFS UI allows you to specify them that way.

If that limitation’s not a concern to you, I can add multiple project support in. However if it is important, we’d have to look at changing the mechanism we use for passing data between TFS and FB. Which, as I’ve mentioned, would take a while.

Cheers,

Ben

Hi Ben

TFS can’t support building sln files in different flavours either. The gui supports multiple flavours, e.g. if you want to build both in release and debug, but this is shared between all solutions on the list.

1. Required
Configurations to Build : Array for configurations. <- Can either be just one or a list
Projects to Build <- comma list with sln files.

I think the most common scenario would be just to build in one configuration.


Christian

I would also like to be able to build multiple solutions from within finalbuilder as well. Right now, it looks like the SourceRoot variable for TFS is the path to the first solution specified in the TFS build. Has this List Iterator Idea that you mentioned been implemented Ben?

Thanks,

Nick

Hi Nick,
You're correct - currently the first solution is used for SourceRoot.

Passing multiple solutions hasn't been implemented yet. In part this is because the simple way to do it would not be particularly intuitive for users and may break existing builds, and because the more correct way is a significant amount of work. I'd prefer to hold off and wait till we've got time to do it properly.

I'll have another look now and see if there's not a middle road that's relatively quick but maintains backwards compatability.


Ben

After a bit of experimenting I have something working. I’ve added a new “Solution File List” parameter that contains a comma separated string of solution file paths.

There’s duplication of data here: the ‘Default Solution File’ parameter is simply the first item of the Solution File List. This isn’t ideal, but it’s needed for backwards compatability.

To use the solution file list, on the TFS side simply select mulitple ‘projects to build’ in the build definition.

On the FinalBuilder side, modify the ‘Get Team Foundation Build Parameters’ action to assign the Solution File List parameter to a project variable. Then use a List Iterator on the variable, changing the List Separator to a comma. Add whatever build logic you’d like as child actions to the list iterator.

This change is in the following test build: https://www.finalbuilder.com/downloads/finalbuilder/aex6/FB700_1006.exe

Please let me know if it works as expected or if you run into any issues.

NB, you do not need to update the XAML templates for this change, however you will need to bounce the TFS Build Service after you install FinalBuilder.