Continuous Integration for iOS

Hello everyone :slight_smile:

I would like to know if someone here already try to do CI for a MonoGame project for iOS builds.

I don’t have any Mac to compile my project on iOS but some of my friends have iPhones and I would like to let them play to my Android game too.

Searching on the net, I found Bitrise that seems pretty good (better interface than Travis or AppVeyor IMO) and allow us to make iOS builds for free. It even supports Xamarin directly!

I tried to compile a vanilla MonoGame iOS project using Bitrise, but it fails because of missing MonoGame library.

I know that I need to setup a bunch of things before to make it works (I did it for Android some months ago), and I know it’s a very time consuming task. That’s why I would like to know if any of you has already tried to do that.

Thanks in advance for your answer :wink:

1 Like

I’ve used BitRise for android & iOS Xamarin projects, but not MonoGame… have you tried using the MonoGame nuget packages instead of the installation?

Thanks for your answer @dmanning23! :slight_smile:

I’ve just tested to install MonoGame iOS through NuGet, but it doesn’t seem to work, I got this error:

+------------------------------------------------------------------------------+
| (5) xamarin-archive@1.5.0                                                    |
+------------------------------------------------------------------------------+
| id: xamarin-archive                                                          |
| version: 1.5.0                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: go                                                                  |
| time: 2017-10-13T14:56:31-07:00                                              |
+------------------------------------------------------------------------------+
|                                                                              |
INFO[14:56:31]  * [OK] Step dependency (go) installed, available. 
Configs:
- XamarinSolution: MonoGame-iOS/MonoGame-iOS.sln
- XamarinConfiguration: Release
- XamarinPlatform: iPhone
- ProjectTypeWhitelist: ios
Experimental Configs:
- AndroidCustomOptions: 
- IOSCustomOptions: 
- TvOSCustomOptions: 
- MacOSCustomOptions: 
- BuildTool: msbuild
Other Configs:
- DeployDir: /Users/vagrant/deploy
Building all projects in solution: MonoGame-iOS/MonoGame-iOS.sln
Building project: MonoGame-iOS
$ "/Library/Frameworks/Mono.framework/Versions/Current/Commands/msbuild" "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS.sln" "/target:Build" "/p:SolutionDir=/Users/vagrant/git/MonoGame-iOS" "/p:Configuration=Release" "/p:Platform=iPhone" "/p:ArchiveOnBuild=true" "/p:BuildIpa=true"
Microsoft (R) Build Engine version 15.3.0.0 (d15.3/17f02c2 Thu Jul 20 17:17:06 EDT 2017) for Mono
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 10/13/2017 2:56:35 PM.
Project "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS.sln" on node 1 (Build target(s)).
ValidateSolutionConfiguration:
  Building solution configuration "Release|iPhone".
Project "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS.sln" (1) is building "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS/MonoGame-iOS.csproj" (2) on node 1 (default targets).
/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS/MonoGame-iOS.csproj(128,11): error MSB4226: The imported project "/Library/Frameworks/Mono.framework/Versions/5.2.0/lib/mono/xbuild/MonoGame/v3.0/MonoGame.Content.Builder.targets" was not found. Also, tried to find "MonoGame/v3.0/MonoGame.Content.Builder.targets" in the fallback search path(s) for $(MSBuildExtensionsPath) - "/Library/Frameworks/Mono.framework/External/xbuild/" . These search paths are defined in "/Library/Frameworks/Mono.framework/Versions/5.2.0/lib/mono/msbuild/15.0/bin/MSBuild.dll.config". Confirm that the path in the <Import> declaration is correct, and that the file exists on disk in one of the search paths.
Done Building Project "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS/MonoGame-iOS.csproj" (default targets) -- FAILED.
Done Building Project "/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS.sln" (Build target(s)) -- FAILED.
Build FAILED.
"/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS.sln" (Build target) (1) ->
"/Users/vagrant/git/MonoGame-iOS/MonoGame-iOS/MonoGame-iOS.csproj" (default target) (2) ->
  /Users/vagrant/git/MonoGame-iOS/MonoGame-iOS/MonoGame-iOS.csproj(128,11): error MSB4226: The imported project "/Library/Frameworks/Mono.framework/Versions/5.2.0/lib/mono/xbuild/MonoGame/v3.0/MonoGame.Content.Builder.targets" was not found. Also, tried to find "MonoGame/v3.0/MonoGame.Content.Builder.targets" in the fallback search path(s) for $(MSBuildExtensionsPath) - "/Library/Frameworks/Mono.framework/External/xbuild/" . These search paths are defined in "/Library/Frameworks/Mono.framework/Versions/5.2.0/lib/mono/msbuild/15.0/bin/MSBuild.dll.config". Confirm that the path in the <Import> declaration is correct, and that the file exists on disk in one of the search paths.
    0 Warning(s)
    1 Error(s)

It’s like if the Content builder was not installed with the NuGet package.

Ok, I’ve simply add these 2 lines in a script before the “Xamarin Archive” task:

wget http://www.monogame.net/releases/v3.6/MonoGame.pkg
sudo installer -pkg MonoGame.pkg -target /

And it seems to work as expected! :slight_smile:

Unfortunatly, I use shaders for my personal project, and it appears that shader compilation is not supported on Mac OS :confused: (link)