Polyglot build of Java, C++ and C#, please provide suggestions


(James Carpenter) #1

I am looking to implement a continuous delivery style build pipeline for a large heterogeneous code base that contains C++, Java and C# code. In some cases there are Java wrappers to C++ code, in others C# wrapping C++ code, and in other cases self-standing C++, Java or C#.

For Java and C++ the obvious solution is Gradle. The biggest unknown is how I should handle the C# code. Options I have considered: a) Use msbuild with NuGet. (Coordinate with Gradle if absolutely necessary, otherwise just wire things together through Artifactory and CI) b) Use msbuild but orchestrate dependency management with Gradle. c) Something else?

Any guidance here would be appreciated.

I am currently planning on using Artifactory as a binary repository and TeamCity as a CI server, but even those are negotiable if there is a compelling reason to change. The deployment environment requires MS installers for desktop applications and firmware images for several mass produced widgets. There is no webserver environment requiring hot-deploy across a cluster, or anything of that nature.

P.S.: The majority of my language expertise is in Java with lots of Maven experience. I am only just starting to learn Gradle.