Building MonoGame on a Continuous Integration (CI) system

I’ve been wondering if MonoGame uses some kind of Continuous Integration build server lately. Given the nature of the project supporting lots of different platforms I’d say it’s pretty easy to break one platform while working on another.

Even without running unit tests I think it would be great to be able to at least know if each of the platform projects build with each code check-in.

I’ve done a little research on how one might go about doing this but so far haven’t come up with a good solution.

First, I considered using Microsoft’s online TFS service (I think it’s called Visual Studio Online). I’ve already got an account for this with my BizSpark membership and I figured it might be the easiest one to setup. However after committing a simple “Hello World” app I noticed that they only provide 60 mins / month of build time which isn’t going to cut it.

Then I started looking around for other hosted solutions. Wikipedia has a list of solutions.

It’s seems hard to find a hosted solution that supports C# and is free for open source projects. Although, I haven’t looked into it much, AppVeyor seems to fit the bill. Sorry, I can’t post more than one link in this post apparently.

The other two that look like they might be interesting are Travis-CI and Shippable.

Most of the hosted solutions don’t support C# out of the box though. However, with a bit of messing around it might be possible to make them work so long as the project builds under mono.

Anyway, I’m hoping to start a conversation around this topic because I think it could be very useful to the project.

Cheers

We do. We host our own instance of TeamCity on our own servers with build agents for both Windows and MacOS.

http://teamcity.monogame.net/

We build pull requests to verify they compile as well as anything merged into the develop branch.

We used to use Jenkins, but it was pretty crappy and difficult to manage IMO. I couldn’t recommend TeamCity enough.

Yeah, cool.

Team City does look awesome. I’m a big fan of JetBrains tools. I love Resharper.

Is there any reason you haven’t included the other platforms? Do you think it would be particularly difficult to get Android or iOS builds working? Is it just a cost thing or some technical difficulty?

I’ve been looking for a solution for my own stuff at home. Ideally I wanted a hosted solution, but I may have to settle for using a local computer. If I did get something working online I’d be more than happy to deal with the Android builds for the community.

We build all the platforms MonoGame targets. The Windows build agent builds the following targets:

  • Windows DirectX Desktop
  • Windows OpenGL Desktop
  • Windows 8 Store
  • Windows Phone
  • Android
  • OUYA
  • PlayStation Mobile
  • Web/JavaScript
  • Linux

Plus the Windows machine also builds the pipeline projects, installers, documentation, etc. The MacOS build agent builds only the following targets:

  • MacOS
  • iOS

Eventually we can even build the private console builds thru TeamCity on a Windows box.

TeamCity really can do anything we need it to with very little effort.

We have it handled, so no help needed.

But we’ve had issues with people being really enthusiastic about MonoGame then disappearing on us. So we plan to keep important things like the build process something we have full control over.

Yeah no problem. I’m glad to know there’s a build system in place. I actually installed TeamCity last night on my own machine and had a play with it. It’s very nice.

I’ve been using MonoGame for ages now but haven’t been very active on the forums. I plan on making an appearance a bit more often.

I’ve managed to get Azure Pipelines building Windows and Mac builds and uploading them to Itch.io. Azure Pipelines don’t have Xamarin.Mac samples so it took a bit of work to get it going. I’ve made a sample app and pipelines demonstrating how I’m doing it for anyone else who might find this useful.