[Travis CI][travis] is a flexible and easy to use continuous integration server; see the [Getting Started page][travis-getting-started] 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 notifications: recipients: - y...@example.com The `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 [tagged version of Radiant][tags]. 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 gem install bundler --pre 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 Replace `YOUR_REPOSITORY_NAME` and `YOUR_EXTENSION_NAME` in the `before_script` with the actual name of your repo and extension; e.g. `radiant-sheets-extension` and `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][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 `.travis.yml`, `before_script` and `script` files and let Travis handle the rest. If you want to know more about all the options you have with Travis the [documentation][docs] is very good. You can see an example of this setup in action on the [Sheets][sheets-repo] extension or check out what it looks like to have your specs run by Travis by visiting the Travis page for [Sheets][sheets-ci]. 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). [travis]: http://travis-ci.org/ [travis-getting-started]: http://about.travis-ci.org/docs/user/getting-started/ [tags]: https://github.com/radiant/radiant/tags [docs]: http://about.travis-ci.org/docs/ [sheets-repo]: https://github.com/radiant/radiant-sheets-extension [sheets-ci]: http://travis-ci.org/radiant/radiant-sheets-extension