As you may already know that we have setup Travis-CI to perform the CI build for Linux platform which will be triggered on every commits or pull requests made into our main repository. Currently the build matrix for Linux platform are:
[ul]
[li]64-bit native build[/li]
[li]32-bit native build[/li]
[li]32-bit Android cross-compile build[/li][/ul]
Each build has two variants: static or shared library types.
Through a lot of trial and error, I have also managed today to setup CI build for OSX and IOS platforms with the following build matrix:
[ul]
[li]64-bit OSX build using Makefile[/li]
[li]32-bit OSX build using Makefile[/li]
[li]64-bit OSX build using Xcode[/li]
[li]32-bit OSX build using Xcode[/li]
[li]64-bit IOS build using Xcode[/li]
[li]32-bit IOS build using Xcode[/li][/ul]
Most comes with two variants except for IOS build which only has static variant, so a total of 10 combinations. The first successful build details can be seen here travis-ci.org/weitjong/Urho3D/builds/18870915. Now I can test all the builds on these platforms with a click of a button. Hopefully any faulty commit that breaks thing could be detected timely and automatically. I even found a couple of errors with our build script while trying to get this setup running.
At the moment, this new setup is only done in my Urho3D fork and not in main Urho3D repository because I am not quite sure of its implication to have it there. Therefore I am posting here to get your opinion. In order to achieve this feat, I have to create a new branch called “master.OSX-CI” which is a mirror of master branch with just one commit ahead, among others is to change .travis.yml’s language setting from ‘gcc’ to ‘objective-c’. As such, it requires a constant “git rebase” to reapply that one commit on top of master branch. It is the rebase part that I am a little worry about. It is easy to automate the git rebase for this new branch. But would this cause any confusion or have any negative implication to user tracking the main repository? For sure we have to inform everyone not to check out the mirror branch locally or make changes on it.
I am also perfectly fine to let this setup just available in my fork. Still I prefer it to be in main repo.