Feedback: One project, multiple target platforms

Hi!

I want to have some feedback on how other TeamCity users approached this problem: I've got some .NET projects that can be built for different platforms (for example, .NET 2.0, .NET 4.0, Mono and XBox 360).

  • I want to make sure the project compiles on all platforms
  • I also want a "release" bundling the build artifacts for all platforms


Currently, I have created my target platforms as configurations below my projects in TeamCity. I picture probably explains it best:
http://img375.imageshack.us/img375/2820/nuclexfoundationteamcit.png
The "Release" configuration takes the latest artifacts from the other three configurations and packages them together (and also uploads them to a Subversion repository storing binaries). Releases are triggered by hand.

Advantages:

  • Very easy to configure and to maintain. Adding another platform is a matter of creating the project and adding a dependency to the "Release" configuration.
  • Configurations/platform builds can build in parallel
  • Configurations/platform builds can each use a different OS (eg. a Mono/Linux build and a Windows/.NET build could be compiled and then packaged as a "Release")


Disadvantages:

  • There's no guarantee that when someone triggers a release, the latest successful builds of the dependencies are all of the same revision
  • I use 4 of my 20 possible build configurations (in the professional edition) for a single package


I'm quite happy with this, except for the fact that it uses up the professional edition's limit on build configurations pretty quickly.

Is this what the configurations in TeamCity were intended for?
Are there better ways to achieve the same?
Anyone else willing to contribute how he solved the same task?

1 comment

Good solution.
Do you use snaphot dependencies for dependencies?

We use about the same scheme to build TeamCity on TeamCity. We have compilation build that produces artifacts for 5 test build configurations and for the dist configuration. Dist configuration depends on sevaral another configurations that produces some parts of TeamCity. All dependencies are snapshot.

Matrix builds could probably make it easier to configure, you may have a look and vote for this feature at
http://youtrack.jetbrains.net/issue/TW-3661

You may use custom run dialog in Release build to provide additional parameter for this build. This parameter may help to chek weather build was triggered right. You may consider moving Release configuration into another project. This project may have restricted rights for users.

0

Please sign in to leave a comment.