Would you be interested in a Unity3D Continuous Integration Service?

As we get further into our own project (War for the Overworld) we have found that our build time has increased dramatically as we add more assets, scenes, and build environments (OSX, Linux and Windows). Once that is done it has to be uploaded to somewhere for QA, in our case, Steam. Altogether its a lot of time - In excess of an hour. Doing that every other day and it adds up quickly.

So I’ve spent the past few weeks looking into options on how best to automate the entire pipeline from the initial Git commit to getting it into the hands of the QA team in our private steam channel. In the software development world this is called Continuous Integration (CI), something typically held in high regard, as it means the team can very quickly turn around builds for testing and integrations of new features and bugs.

I think I may have finally worked out a nice pipeline and set of software to tie it all together, and I was wondering if anyone else would be interested in this? If so I will consider writing up something of a guide on it. However I was also thinking about whether it’d be worth the time investing in setting up a web service for other dev teams to quickly and easily setup a CI pipeline given that the solution I have is quite complex and time consuming to setup. It would probably have a minor monthly cost to it as it will of course consume real resources to compile upon.

Thoughts?

It would be great if you find the time, to share any Unity specific challenges you encountered.

Just as a guess, I would assume that very few teams/projects would require a build server. And the ones that do need it would probably be more inclined to keep it in-house rather than a 3rd party service. But you could probably sell a package/docs on it (especially if you set it up to be managed/run from an interface within Unity). And could be attractive if it handles multiple builds/environments.

Again, love to hear more about it if you get the chance.

I love your work guys! Been following for a while now as a vivid Dungeon Keeper 2 fan. And you are from Australia, another bonus.

I would also love to hear more about your pipeline

I’d be interested in reading about your experiences setting up a pipeline for your project, but I don’t think I’d want to outsource CI on my own project - there are security concerns, and as our builds are presently about 2GB each there’d be quite a lot of bandwidth churned.

I would guess projects small enough to host online are unlikely to use it, while large projects are probably both too confidential and too large to host online.

We’ve used Cruise Control to do automated iOS+desktop builds. I’d guess it wouldn’t be cheap to provide the cloud processing power for our builds considering how often we commit.

All good points regarding the online service idea. I’ll likely scrap it unless I can see a decent plugin in it. Thanks for the feedback.

I’ll look at writing a bit of a post on it once I’m happy with our CI pipeline. :slight_smile:

I’d be interested in hearing what kind of hardware you’re running your CI server on.

I am currently managing my own CI server (https://devel.nuclex.org/jenkins/) with Windows and Linux build agents, but I had to give up on adding Unity projects to it because Unity needs 3D acceleration just to compile a project (and my build agents are virtual machines on headless servers).

I wouldn’t be interested in a service. In fact I don’t think whom we work with would allow it - we have to have a static IP and keep their software in one location to begin with. I don’t feel comfortable outsourcing that. But I am interested in a package I can purchase and run myself if need be, or information about the process :slight_smile:

Agreed. A cost-effective way would be really good.

In the past I’ve used CruiseControl, and in my current job I use TeamCity for our CI needs. There’s another system called BuildMaster from Inedo, that is at least well-advertised thanks to appearing on The Daily WTF.

However, all of these systems are licensed (understandably; it takes time and resources to build such a system.) If there was a way to get one of these for non-enterprise usage, possibly even able to be hosted from some impromptu server (e.g. a slightly older computer that acts as a ‘build server’) that would probably go a long ways to help many of us in terms of having more robust DevOps.

I’ve used TeamCity for quite a while (from 1.0 to 3.0 they had a $200 flat fee). But it became too expensive for me when they started demanding $1000+ with a major release every 8 months or so. And the free edition’s 20 project limit wouldn’t get me very far. Apart from that, the Ajax GUI and clean design of TeamCity were really fantastic :slight_smile:

Jenkins.

It’s free and can do a lot more than even TeamCity. It has Build Agents (one CI server commands any number of Win, OSX or Linux slaves), repository monitoring, artifact publishing, unit test runners, code metrics, archival rules, user signup, per-project access rights, bindings for popular bug trackers, in-browser administration and a huge repository of mature plugins.

Hosting can be done on any cheap box that’s able to run Tomcat.

There are many publicly viewable Jenkins instances on the web if anyone’s interested in seeing it in action:

We’ve been using Unity to make mobile games for three years now. One of the biggest challenges we faced was having to create builds for multiple platforms at the same time. When we couldn’t find a ready-made solution we built one! Our builder got pretty robust, so at the prodding of friends, we’re making it available to all of our fellow developers.

“Tsugi Builder” is our continuous integration (CI) service for Unity games and apps. Once you setup an account and point it to your source control, our robots simultaneously deploy to iOS, Android and Web Player. We’ve just kicked off the beta, and are letting developers in on a first-come-first-serve basis.

Check it out: http://tsugi.co/

We’d love to get your feedback on what it can do!

Cheers,
Patrick

Hi Patrick,

Thanks for letting us know. Would you mind going into some technical detail around how your system works? Are you utilizing Jenkins?

@strich

We’re big fans of Jenkins. If you’re going to build your own internal build system, Jenkins is a great place to start.

Our goal at Tsugi is to remove the headaches involved in creating and managing your own a build system. Our system is designed to be turn-key, especially for Unity projects, and you don’t have to create your own build scripts or add any code to your projects. In broad strokes, here’s how our system works:

  1. You sign up and we email you a login to the service.

  2. You tell the system which platforms you want to build your Unity game/app for. We currently support building for iOS, Android and the Unity Web Player.

  3. If you want to build for iOS, you upload a .mobileprovision file and a .p12 file.

  4. You tell the system which source control system you use, and give it login credentials. We support Git, SVN and Perforce. If you use GitHub or BitBucket, you invite the “tsugi” account to the project.

  5. Tsugi Builder then kicks off builds for each platform. You get emails back for each successful or failed build attempt. From that email you can install the build directly to your device, view the build log, and view the list of source control changes.

  6. Every time someone on your team commits to your source control, we kick off a new build for each platform.

There’s a little bit of setup to do before you get started, but it seems like most serious developers in the Unity scene already fit this criteria. Here’s the checklist:

  1. A valid Unity license for each platform you’re developing for.

  2. A Unity project in a source control server. For Unity, we only want/need the “Assets” and “ProjectSettings” directories in source control. If you don’t have a source control server yet, GitHub and BitBucket both have free hosting options.

  3. If you’re building for iOS, you need a .mobileprovision file (from Apple), and a .p12 file (which is a developer certificate and key, exported from the Keychain app).

That’s it! We originally built this system to help us create games and apps for our clients, and we’re now offering it up to the world as a service. So far the feedback from developers in the beta has been really positive. If you’re looking at doing CI with Unity, we’d love to get your feedback and see if it can take some of the daily grind off your shoulders.

Here’s the beta sign-up link: http://tsugi.co/signup

Cheers,
Patrick