IOS – Use a Mac mini as a remote build server for an iOS game

iossshxcode

Five other people and I are developing an iOS game using ARKit. I have a MacBook that I use for myself, and a Mac mini sitting at home that could act as a remote build server.

Now, it would be easy enough for them to edit the project's swift files, upload them to my machine, and have it build the project for them. Or even just push them to out git repository which runs all the tests with TravisCI.

I feel that's a really subpar solution, as you'd miss all of the helpful features of a modern IDE. It's a lot easier when your tools immediately tell you you're doing something stupid, rather than writing a bunch of code just to have it not compile in the end.

I started searching, and I found this: http://dringend.cc

Something like that would probably be ideal, but unfortunately it's only available for iOS, and they'd need a Windows or Linux application.

Things I've thought about using:

  • Using Steam or something to stream the entire desktop (VNC is too slow) so they could use Xcode. Could work, but it could be flaky depending on the Internet connection. Plus, it doesn't support multiple users obviously, and even if it did, it would still be a pain to manage multiple git users.
  • Something like https://www.macincloud.com for each of them, but it could get expensive. Ideally we wouldn't have to spend any money.
  • Buying Macs – not an option.

Is there any sort of IDE that would give you code analysis, and allow you to run code remotely and see the output locally? I know CLion supports Swift, but it wouldn't really work when you tried to import UIKit and etc.


I know working around having to get Macs results in a crappy experience overall, but this is something we're doing as part of our university course. We do have some hope of putting it on the App Store (that's why we chose iOS), but it's not a commercial project by any means – and as such there are no funds available to buy Macs.

I had some hope I could devise an elegant solution for this, but perhaps having them run a slow VM would be our only somewhat acceptable option.

Best Answer

I haven't had a chance to test this well designed and documented system that Microsoft just announced, but you might be able to run the free tier or arrange an educational discount if they're looking for some partners as they launch.

If that doesn't work, my recommendation is you’ll need to run Xcode 9 on your mini and then get one used Mac for every other contributor. They can connect to the build server on iOS 9 and either use Xcode themselves or Screen Share as the second account each Mac allows fully supported.

You will waste far more effort, suffer low quality code and delay working around tooling issues than you’ll gain by not funding your development team with tools that work. Buy broken Mac at scrap prices and fix them up or cook dinner and trade labor with someone that can repair Macs. Do anything you can think of to get your team Xcode running on macOS.

It’s like training dentists remotely with no tools but books and then hoping they perform as part of a team still without tools. Your customers will not be fooled when they see the results. Worse, if your iOS app is going to the App Store, you’re competing against every team that had funding for 4 years college, the best training and tools.


Now, I hope to be proven wrong soon. I think we’re a year or so away from the Xcode server to be good enough to really run as the build server João hopes to find, but in October 2017 they aren’t ready. The iPad should be a $250 solo, design, test, build machine as swift playgrounds mature. Once that is hooked into Xcode in the cloud or running remotely, it should be game on for windows, Linux, iOS and Mac to be on somewhat more equal footing to program for iOS since someone might invest the effort to reverse engineer the remote Xcode programming functions. Today, Mac is privileged to develop for iOS and to operate otherwise puts your team at a huge disadvantage.

For low cost programming options, you might need to scope to python or swift alone without the iOS framworks to keep the budget low for 1:1 hardware deployments that you could fund with a grant or course fees.