Join GitHub today
How to enable Travis CI for an extension
Travis CI is a flexible and easy to use continuous integration server; see the Getting Started page for more details. The flexibility means that there are any number of ways to setup and test your extensions. Here is one way.
First you need to add a
.travis.yml file to the root of your repository.
rvm: - 1.8.7 - 1.9.2 - 1.9.3 before_script: "./spec/ci/before_script" script: "./spec/ci/script" env: - RADIANT_VERSION=0.9.1 DB=mysql - RADIANT_VERSION=0.9.1 DB=postgres - RADIANT_VERSION=1.0.0 DB=mysql - RADIANT_VERSION=1.0.0 DB=postgres - RADIANT_VERSION=master DB=mysql - RADIANT_VERSION=master DB=postgres # older versions of radiant do not run on ruby 1.9.x # use matrix exclusions to prevent them running matrix: exclude: - rvm: 1.9.2 env: RADIANT_VERSION=0.9.1 DB=mysql - rvm: 1.9.2 env: RADIANT_VERSION=0.9.1 DB=postgres - rvm: 1.9.3 env: RADIANT_VERSION=0.9.1 DB=mysql - rvm: 1.9.3 env: RADIANT_VERSION=0.9.1 DB=postgres notifications: recipients: - email@example.com
rvm array shows the Ruby versions you want to test against; since Radiant 1.0 supports the three latest Ruby releases your extension should too. Likewise the
env array list Radiant version/database combinations to test against; the Radiant version can be any tag or branch name.
Next up we need to create the
before_script referenced above. The
before_script is run before your tests and sets up a complete Radiant environment within which your tests will be run.
cd ~ git clone git://github.com/radiant/radiant.git cd ~/radiant if [[ $RADIANT_VERSION != "master" ]] then git checkout -b $RADIANT_VERSION $RADIANT_VERSION fi cp -r ~/builds/*/YOUR_REPOSITORY_NAME vendor/extensions/YOUR_EXTENSION_NAME bundle install case $DB in "mysql" ) mysql -e 'create database radiant_test;' cp spec/ci/database.mysql.yml config/database.yml;; "postgres" ) psql -c 'create database radiant_test;' -U postgres cp spec/ci/database.postgresql.yml config/database.yml;; esac bundle exec rake db:migrate bundle exec rake db:migrate:extensions
YOUR_EXTENSION_NAME in the
before_script with the actual name of your repo and extension; e.g.
sheets respectively. Don't forget to make this script executable before committing it to your repository.
Finally we need to create the
script file. This is the script that actually executes your tests.
cd ~/radiant bundle exec rake spec:extensions EXT=YOUR_EXTENSION_NAME
Again you need to replace
YOUR_EXTENSION_NAME with the real thing and make the script executable.
All that's left to do is login to Travis, enable the commit-hook for you repository and push. Head over to http://travis-ci.org/ and click the "Sign in with GitHub" link. Once you've authorized through GitHub visit your profile page on Travis, find the extension to enable and flick the switch to on.
Now you're ready to commit and push the
script files and let Travis handle the rest. If you want to know more about all the options you have with Travis the documentation is very good. You can see an example of this setup in action on the Sheets extension or check out what it looks like to have your specs run by Travis by visiting the Travis page for Sheets. Once setup Travis will run your tests after every commit unless you add
[ci skip] to the commit message (which is good practice when pushing documentation or other commits that don't affect functionality).