Is it viable to run Jenkins on a VM hosted on either microsoft azure or amazon etc which purpose is to build various Unity projects?
I know this is a rather broad question, but is this viable in terms of time and money for small indie teams? We have only little experience with jenkins and VM in general, and so we don’t know if its viable or affordable to host a build server on a cloud service. We are not interested in 2+ hours build processes neither are we interested in spending the little money we have.
What has to be build is a small unity project, without too many binary assets. No heavy process such as light baking has to be done, and there are currently no integration testing implmented (but could be in the future). We assume to have jenkins create minimum one build per day for Android and iOS, followed by fastlane submitting builds to both itunes connect and google play.
Any of you have experience hosting jenkins or other build tool on a VM machine? Is it affordable for normal human beings?
We don’t use a VM for Jenkins, currently we just have it on another PC in the office that also contains the Unity install for the build process. That might change to be server hosted later but our server is already rather busy.
It works well though, requires a bit of setup but once it’s done it saves a lot of time.
Worth noting we aren’t at an ‘indie’ scale of production though.
Also the entire process has been free barring the unity license for the builds and the machine itself (which is pretty cheap and shitty as we only need the CPU). (also cost of time to implement)
We once setup jenkins on an OSX server placed in one of our homes. We struggled whenever we encountered loss of internet, power surges, ip-changes and so forth. Maybe we just didn’t set it up properly, but all these minor complications became a hazzle. We don’t have an office space where we can set up a server, because we have close to no possibility of port forwarding. If the Jenkins / VM solution isn’t applicable, then we properly have to return to our former setup.
VMs in the cloud are expensive, especially if you want something with decent enough horse power to give you decent builds.
What are you using for source control? Git? TFS? One potential solution if you’re not opposed to switching repository providers is to use Visual Studio Online (you can do TFS or Git repositories) and use the build pipeline built into VSO. It’s highly customizable and for a small indie team, pretty cost effective. It’s free if you only have a few users. If you have an MSDN subscription you get additional resources as well (free for any MSDN account so it doesn’t eat into your non-MSDN user limit) and you get something like 1,000 free build minutes per month.
I should add that it would be somewhat of a manual process though… you’d have to write a batch or powershell script (or some kind of MSBuild addin) to handle the build itself. But you can easily add additional steps such as signing APKs.
We are using Git. I am not familiar with Visual Studio Online so i will have to look into that. Sounds interesting though. We are currently part of Bizpark so maybe we already have some free build minutes available.
Yes you do, BizSpark is a program that provides MSDN so you’ll all be able to use VSO at no cost and have some build minutes.
That won’t solve all of your issues… I didn’t see a build task in there for Unity3D but there is a way to do it. I think you could include the executable you need in source control, then you can choose Command Line as a build process option and from there you can execute Unity via the command line with the switches you need just to do a build… I’m not 100% sure how that works.
Even if you decided to go the route of using Jenkins on a VM, you can do it with VSO. And, they actually already have build tasks for Jenkins (as well as some other things) so you can set up manual or CI builds. The nice thing is the entireity of the process. If you have separate things that are just Visual Studio solutions (like class libraries), you can setup build steps for everything… an MSBuild step to build your class libraries, a file copy step to copy those files into your Unity project folders, and then a command line step to do the Unity build.