Hosted continuous integration services for PHP

Today, I’ve been evaluating popular hosted CI services to see how well they’re working with PHP and how much they cost.

drone.io

https://drone.io/

drone.io is free for Open Source projects (one concurrent build). Paid plans for private repositories start at 25 $ / month. Builds are configured on the Web site. PHP support is marked as “beta” for good reasons: PHP 5.5.1 and composer are pretty much outdated. By default, builds are triggered by commits to all branches (can be limited).

drone.io

If you don’t mind the old PHP version, you can update composer and run phpunit like this:

curl -sS https://getcomposer.org/installer | php
php composer.phar update --prefer-source --no-interaction
phpunit

Codeship

https://codeship.com/

Codeship is free for private projects (up to 100 builds / month). Open Source projects get unlimited builds. Paid plans start at 49 $ / month. Just like drone.io, build scripts are configured on the Web site. Since builds are triggered by commits to all branches, you’ll get “[Build failed]” notification mails even if branches are changed, that don’t contain code (for example “gh-pages” for GitHub Pages). PHP versions 5.3, 5.4, 5.5 and 5.6 are available.

Codeship

My setup commands for PHP 5.6 and fetching composer dependencies look like this:

phpenv local 5.6
composer update --prefer-source --no-interaction

The next version of Codeship is supposed to support YAML files in a similar fashion as CircleCI and Travis CI.

CircleCI

https://circleci.com/

CircleCI offers unlimited builds for free (one concurrent build). Paid plans start at 50 $ / month. The user interface can be a bit confusing at first.

CircleCI

Builds are configured on the Web site or in a circle.yml file that’s checked into the repository (like Travis CI):

general:
  branches:
    ignore:
      - gh-pages

dependencies:
  override:
    - 'composer update --prefer-source --no-interaction'

test:
  override:
    - phpunit

machine:
  php:
    version: 5.6.14

Currently supported PHP versions are 5.3.3 up to 7.0.0RC7.

Travis CI

https://travis-ci.org/

Travis CI is by far the most mature and popular service. It’s completely free for Open Source projects. Paid plans start at 129 $ / month.

Travis CI

Builds are configured in a .travis.yml file that’s checked into the repository:

language: php

sudo: false

php:
  - 5.5
  - 5.6
  - 7.0
  - hhvm

before_script:
  - composer install --dev

script: phpunit --configuration phpunit.xml.dist

You can run your tests on multiple PHP versions in parallel and don’t need to provide exact version strings like “5.5.9”. Even Facebook’s HHVM (HipHop Virtual Machine) is supported. Tests are only executed (and a notification email sent) if a .travis.yml file was found.

Conclusion

While Travis CI certainly is the best hosted continuous integration service for Open Source projects, it’s also the most expensive one for private repositories. Budget-oriented users save some money with Codeship or CircleCI, if they can accept minor trade-offs. drone.io can not be recommended for PHP projects.

Leave a Reply