6

I am looking for a Continuous Integration System to use with Drupal 7. Preferably it should be widely used and easy to support.

Do you have any thought?

  • 2
    I have no direct experience with it but I've heard very good things about Jenkins. You might find some more info at the Drupal CI group – Clive Sep 12 '12 at 11:21
  • Is there any benefit in using Team City or would Jenkins be the preferred option? Most resources I can find talk about Jenkins. – Chris Woollard Sep 12 '12 at 13:13
  • I haven't used either so I can't really comment, except to say that Jenkins is the one that always (literally, always) comes up when talking CI with Drupal people – Clive Sep 12 '12 at 13:16
  • There was a session on this at Drupalcon Munich- Achieving Continuous Integration with Drupal. You can watch the video for free online at the linked site. – Patrick Kenny Sep 13 '12 at 0:09
7

Among open-source PHP projects, the two most widely-used CI implementations are easily Jenkins (jenkins-ci.org) and Travis (travis-ci.org). Both have significant communities, and you can find examples of using them with Drupal (eg wiki.jenkins-ci.org/display/JENKINS/Drupal+Development and www.vmdoh.com/blog/how-we-test-drupal-7-modules-travis-ci).

Between the two:

  • Jenkins' positioning is more like Drupal's -- it's an open-source product with a lot of add-ons/options/features, but you have to think a lot about deployment and picking options. It's useful for testing and many other things (e.g. deployment, nightly tarballs, cron-jobs).
  • Travis is a proprietary SaaS offered on a freemium basis -- free for public/FOSS code; paid otherwise. It's generally easier to setup because Travis provides servers and bundles more features in the default. It has a more focused/limited range of use-cases.

For some specific features that differentiate them (at time of writing):

As a rule of thumb:

  • If you have a large project (with lots of code, lots of tests, peculiar integrations, some budget), then Jenkins' deeper feature-set and configurability make it the better choice.
  • If you have a small project published on Github (e.g. an individual Drupal module or PHP library with no budget), then Travis's simplicity and bundling make it the better choice.
  • If your project is in between, then there is no clear rule of thumb; it's a judgment call.

Aside: You may find buildkit.civicrm.org interesting. The summaries and explanations are written for an audience that works with Drupal/Joomla/WordPress, although a lot of technical details would need tuning for a Drupal-only audience (e.g. replace "civibuild" with "drush"; replace "Build Types" with "makefiles").

(NOTE: I left several links as plain-text because stackexchange limits the #links from new users.)

3

I don't think there's a better-than-anything-else reason why you should use some tool over other CI tools, they all do pretty much the same thing (get source, do stuff).

I'm using Jenkins at the moment and it works quite well.

At the moment we're using Jenkins to:

  1. Fetch the latest code from the code repository
  2. Update the database
  3. Clear the cache
  4. Run tests
  5. Generate documentation using Doxygen

You could also add steps for syncing databases, code review, deployment, ... A lot of Drupal specific work (update the database, clear cache, run test) is done using Drush. If you are planning to use a CI system Drush is pretty much a must-have.

Hint: run-tests.sh or drush test-run can generate JUnit compatible XML reports, so Drupal tests are supported by default in Jenkins.

Hint: if you're on a multisite installation and you're moving stuff between /sites/all and the site specific directory, use Registry Rebuild to fix the registry.

There are lots of plugins available, ranging from deployment to agile dashboards, but we've got a pretty standard setup.

At first it requires some experimenting but once you have the right setup for your team, it's pure profit. The way I see it you'll need to do more thinking on how you're going to organize your configuration (using Features or other exportables) in Drupal.

0

There are so many now but there isn't so much a clear cut winner. It is a very hard decision because there are so many and they all do a lot of the same things.

Basically I guess you have to decide what your specific requirements are, see which options provide what you need. Then there will probably still be multiple that meet your needs you have to try as hard as possible to find any pros and cons of each (maybe some are better supported, fit your existing technical skillset better, have more community, etc.) and in the end just choose the one you like the best and go with that.

If you wanted and had the time and resources you could also try out a couple of your top preferences and see which you prefer.

Here are some continuous integration related options. Some hosted, some self managed, some with both options. Some aren't focused solely on CI.

Good luck choosing :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.