Friday, April 27, 2012

Hosted Continuous Integration

Chris blogged about Travis CI a while ago, a site which provides free CI for github projects. Unfortunately, Travis is for github projects only. So, I was wondering if there are other hosted CI solutions available. Here are the results a short google session, some tools are also suggested at stackoverflow:
SiteCI systemBuild systemVCSTriggerNotificationPricingDeploymentComment
Travis CI Travis Maven, Ant, and others git (github only) github: Travis hook email free for OS no still alpha
CloudBees, FOSS free Jenkins Maven git, SVN, and others github: Jenkins hook ? free for OS ?
FaZend Hudson Maven, Ant, and others SVN ? email free ? still beta
CodeBetter TeamCity Maven git, SVN, and others github: TeamCity hook email, Jabber, and others free for OS ?
Shining Panda Jenkins Maven git, SVN, and others github: Jenkins hook email €0.36 / hour ? Focused on Python
Jenkins Hosting (Bubbleware Technology) Jenkins ? git, SVN ? ? free for OS (+ Amazon EC2 fees) ?
continuous.io/ ? ? ? ? ? free for OS (+ Amazon EC2 fees) ?
I focused on support for Java projects and Maven/Ant support. Some remarks:
  • Trigger: This means how the build is triggered. This is of course not a feature of the CI system itself, but of the source code repository. Github or Bitbucket provide some hooks, unfortunately, EclipseLabs (GoogleCode) doesn't, or does it?
  • Notification: This means how the system does notify the user of the build result. After a successful build, one probably want to somehow deploy the created artifacts.
  • Deployment: Actually, I'm looking for a solution of copying the artifacts, which actually are a P2 repository, to some download or update site. Of course, this could be achieved by Maven plugins or Ant tasks, however, the crucial point is how to pass some credentials (user name, pass word) to the build system. Especially if you are building an open source project, you do not want to write this information into the maven script. Seems as if this is a common problem. If this problem were solved by Travis, it would be the best solution, at least for github projects.

Actually, it is very hard to determine the features of the different solutions. Many projects seem to be in a very early stage, and some projects announced are already gone (e.g., Mike CI). Most projects are cloud based, some use Amazon EC2 and users need their own Amazon EC2 account. For open source projects, it is often required to fill out some request form, and I don't know whether all projects are accepted.

Leave me a comment if you have any experience with a solution listed above, or if you know of other hosted CI systems.