I wrote about Continuous Integration before and even built a counter with which I’m able to monitor our CI environment at work. As CI is one of the greatest tool a software project could have, I wanted it for CxxProf too.
There are certain reasons speaking for a self-hosted CI:
- Full control over the environment (OS, compiler, thirdparty, …)
- Free choice of the CI tool (Jenkins of course!)
- Customization options via plugins and configuration
- Integration of continuous distribution
However there is one reason against it: I would need to rent a root server which costs a fortune. All for an open source project which is not designed to make any money. Another way would be to host it on one of my own machines, but it won’t have a lot of uptime then.
This is where hosted CI solutions come into play. A search finds dozens of them. I do not want to list all services I found, as it seems that there are new hosters coming up every day. I just want to list some disadvantages I found during my search:
- Some cost a vast amount of money. These services are probably aimed at enterprises
- Not all services support C++. There seems to be a good amount of Python and Ruby centric services out there
- I did not find a service which is able to compile with Microsofts Visual Compiler
- Continuous Distribution does not seem to be an important part for a lot of providers
- A few services need a special config-file in the project root. This could have its own dis/advantages I think
After some research I stuck with Travis-CI and drone.io. I at first used codeship.io too, but it had a confusing UI and did not provide cmake, nor did it allow me to install it as part of the build process. So why these two services?
- Has seemingly the most mature feature set
- Supports compilation with clang++ (not only g++)
- Fully integrated with Github
- Full control: It is even possible to install new software using apt-get. It also allows to sudo certain commands
- Neutral: No separate distribution options visible. However it is probably possible to create packages as part of the build and upload them anywhere
- Negative: Uses an Ubuntu with 64bit. No 32bit machine available. Also no Windows environment
- Negative: It is needed to add a configuration file to the code
- Very slick UI, everything is easily findable
- Fully integrated with Github
- Full control: sudo and apt-get is usable as it is with travis
- All the configuration is done online. That way the software stays untouched
- Separate distribution area where configurable build artifacts are downloadable
- Negative: Also uses a 64bit Ubuntu. No 32bit or Windows available
Both services are free for open source and provide notifications as soon as something fails. It seems as if drone.io is a bit better than Travis-CI, but the more mature appearance and its clang-support helped Travis staying on my list of solutions. It’s a bummer that both services leave out Windows, but as I said earlier there wasn’t a single service supporting it. Having reports for the Linux-builds is still a valuable tool, as it is not my main platform and I get continuous feedback that way.