Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Continuous Integration for stack with Visual C++ and C#

Please recommend a good continuous integration that would build and integrate with the .net stack and the visual c++ as well.

Some recommendations I have got are

  1. Jenkins
  2. CruiseControl
  3. Teamcity

Because of the polyglot nature of the project, which continuous integration solution would you recommend?

like image 400
unj2 Avatar asked Nov 21 '11 01:11

unj2


People also ask

Which DevOps tool is used for continuous integration CI?

Buddy. Buddy is a DevOps automation platform that allows continuous integration, continuous deployment and feedback. This tool was made for working with projects that use code from the Bitbucket and GitHub repositories.

What is CI CD tools in DevOps?

CI/CD is a method to frequently deliver apps to customers by introducing automation into the stages of app development. The main concepts attributed to CI/CD are continuous integration, continuous delivery, and continuous deployment.

How does DevSecOps improve the continuous integration continuous deployment CI CD pipeline?

DevSecOps helps clear up the bottleneck caused by older security models and tools on the modern CI/CD pipeline. It helps close the gap between IT and security while assuring efficient and safe code production.


4 Answers

I have used all three over several years. Some of the answers below state that most of the work will be producing your own build scripts. This has been true in my experience as well. We use a combination of MSBuild and Powershell scripts for our build process, which can be run under just about any CI tool, so picking one comes down to what you're looking for in terms of customization, integration with other systems, performance, and ease of use.

Short answer:

I recommend Jenkins. So far it seems to be the best combination of the above qualities. It has a ton of plugins, some localization and is actively developed by the OSS community.

Long answer:

  • I started with Cruise Control .Net. It was easily configurable with a text file and I found it highly reliable. However, we moved away from it because Thoughtworks was moving toward a paid product (Cruise, now Go) and future development was in question. A new team has since forked the project but there is little word about future development since.
  • We moved to TeamCity, which is free and has a great ajax-y UI. It is easy to setup and get going and has a lot of features for distributed builds. We quit using TeamCity for several reasons. The server does a ton of stuff and it was a bit overkill for our basic needs. Even so, it was not very customizable (see Time Zones and notification contents) and we often found the administration UI confusing. That was all still okay, but we also had steadily worsening performance problems. We started with a standard HSSQLDB out-of-the-box, moved our installation to SQL server when we started experiencing degraded performance, then had to quit using the server at all as performance continued to degrade over time. I'm not sure what the culprit was but I couldn't find any cleanup to do that would explain the constantly worsening performance as the Tomcat web server fought with SQL Server for resources, even when there were no active builds running. I am sure it's my fault and I was missing some crucial setting or needed to feed the server more memory, but this is a shared utility box, we did not have these issues with CC.Net, and most of all, I am not a Java/Tomcat guy and don't have a lot of extra time to keep fighting with these issues.
  • We've moved to Jenkins now. It seems to be working fine so far but we've only been with it a short while. It was easy to set up, does not seem to be taking nearly as many resources as TeamCity and has a ridiculous number of plugins. The only downside so far is like many OSS products, it does not seem to have the best documentation and it does so much that I may be tweaking knobs for a while to get it set up the way we want.
like image 101
Brian Ellis Avatar answered Oct 06 '22 19:10

Brian Ellis


Between CruiseControl and TeamCity, TeamCity is faster and easier to set up, but you may need to check on licensing for it. I can't speak to Jenkins, never having used it.

like image 45
BlackICE Avatar answered Oct 06 '22 20:10

BlackICE


Jenkins has the big advantage of being very extensible (currently over 400 plugins), which allows you to combine it with a huge number of other tools. So it gives you complete freedom in your other tool choices. I recently read that this is one problem of TeamCity, that you get locked in using the whole stack of tools (e.g. using SVN or Git as version control system will not be possible).

I am using Jenkins myself for our projects which has both Java and C++ code, and I am very happy with the tool. We had CruiseControl before, and have not once regretted the switch.

like image 27
pushy Avatar answered Oct 06 '22 19:10

pushy


I have tried both Cruise Control and Jenkins, and Jenkins impressed me with very fast and user-friendly set up.

The three you list are all sensible choices, and the main problem will be producing the build script(s) needed to do produce the build artifact(s). If you manage to make them do everything needed, changing CI system shouldn't be a big issue.

like image 1
Anders Lindahl Avatar answered Oct 06 '22 20:10

Anders Lindahl