-
Notifications
You must be signed in to change notification settings - Fork 505
Travis CI
Travis-CI is an OpenSource Continuous Integration platform. When it's hooked up, every time a pull request is submitted to the otwcode/otwarchive repository on GitHub, Travis-CI will grab a copy of the code changes, merge them into a master copy, and then run our test suite against that new copy of the code. It will run the tests again whenever a pull request is merged into master.
Results will be sent to the #otw-dev channel on freenode and the otw-coders-extra mailing list as detailed in the [How It Looks section](#How it looks). Additionally, project members with merge permissions will be able to see the build status near the merge button on each pull request.
You can also [set up Travis-CI to work with your copy of the otwarchive repo](#Travis-CI/GitHub Link Setup) so you can test your changes before submitting a pull request. It requires some setup, but it is well worth it -- Travis-CI runs our test suite much faster than most development environments.
Last updated 13 July 2016.
Should all else be lost, you can use these steps in order to set up a fresh copy of otwarchive so that it integrates itself with Travis-CI. Changes to pre-existing files have been marked in bold.
- Create the
.travis.yml
file in the root directory:
language: ruby
sudo: required
env:
- TEST_GROUP="./script/check_syntax"
- TEST_GROUP="rspec spec"
- TEST_GROUP="cucumber -f progress -r features features/admins"
- TEST_GROUP="cucumber -f progress -r features features/bookmarks"
- TEST_GROUP="cucumber -f progress -r features features/collections"
- TEST_GROUP="cucumber -f progress -r features features/comments_and_kudos"
- TEST_GROUP="cucumber -f progress -r features features/gift_exchanges"
- TEST_GROUP="cucumber -f progress -r features features/importing"
- TEST_GROUP="cucumber -f progress -r features features/other_a"
- TEST_GROUP="cucumber -f progress -r features features/other_b"
- TEST_GROUP="cucumber -f progress -r features features/prompt_memes_a"
- TEST_GROUP="cucumber -f progress -r features features/prompt_memes_b"
- TEST_GROUP="cucumber -f progress -r features features/prompt_memes_c"
- TEST_GROUP="cucumber -f progress -r features features/tags_and_wrangling"
- TEST_GROUP="cucumber -f progress -r features features/users"
- TEST_GROUP="cucumber -f progress -r features features/works"
rvm:
- "2.1.9"
services:
- elasticsearch
- redis-server
- memcached
script:
- rm -f structure.sql
- RAILS_ENV=test bundle exec rake db:create:all --trace
- RAILS_ENV=test bundle exec rake db:schema:load --trace
- RAILS_ENV=test bundle exec rake db:migrate --trace
- travis_retry bundle exec $TEST_GROUP
before_script:
- bash script/travis_configure.sh
- bash script/travis_elasticsearch_upgrade.sh
notifications:
email:
recipients:
- [email protected]
on_success: change
on_failure: always
irc:
channels:
- "irc.freenode.org#otw-dev"
on_success: change
on_failure: change
- Create the
/config/database.travis.yml
file:
test:
adapter: mysql2
database: otwarchive_test
username: root
encoding: utf8
- Create the
/config/redis.travis.example
file:
redis_resque:
test: localhost:6379
redis_kudos:
test: localhost:6379
redis_general:
test: localhost:6379
redis_rollout:
test: localhost:6379
- Edit
/config/initializers/gem-plugin_config/redis.rb
as follows:
require 'redis_test_setup' include RedisTestSetup if ENV['TRAVIS'] rails_root = ENV['TRAVIS_BUILD_DIR'] rails_env = 'test' else rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../../..' rails_env = ENV['RAILS_ENV'] || 'development' end unless ENV['TRAVIS'] if rails_env == "test" # https://gist.github.com/441072 start_redis!(rails_root, :cucumber) end end redis_config = YAML.load_file(rails_root + '/config/redis.yml') redis_host, redis_port = redis_config[rails_env].split(":") $redis = Redis.new(:host => redis_host, :port => redis_port)
- Edit
config/initializers/gem-plugin_config/resque.rb
as follows:
require 'resque' if ENV['TRAVIS'] rails_root = ENV['TRAVIS_BUILD_DIR'] rails_env = 'test' else rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../../..' rails_env = ENV['RAILS_ENV'] || 'development' end redis_config = YAML.load_file(rails_root + '/config/redis.yml') Resque.redis = redis_config[rails_env] # in-process performing of jobs (for testing) doesn't require a redis server Resque.inline = ENV['RAILS_ENV'] == "test" Resque.after_fork do Resque.redis.client.reconnect end
-
Log in to Travis-CI with GitHub
- In your browser, navigate to http://travis-ci.org
- Choose 'Sign in with GitHub' in the top right-hand corner of your screen
- If you're not signed in to GitHub, you'll need to enter your GitHub credentials
-
Get a list of your repositories
- Hover over your name in the upper right corner of the page and select 'Accounts', or go straight to your Travis-CI profile
- Choose 'Sync account' to grab a list of your repositories
-
Turn on and set up Travis-CI for your otwarchive repository
- Use the switch next to
YOUR_GITHUB_USERNAME/otwarchive
to turn on Travis-CI - Select the name of your repository to go to its page on GitHub, e.g.
https://github.com/YOUR_GITHUB_USERNAME/otwarchive
- Go to your repository's settings page by choosing the the 'Settings' link/gear icon link or go directly to
https://github.com/YOUR_GITHUB_USERNAME/otwarchive/settings
on your repo's page - Go to the 'Webhooks & services' section of your settings, i.e.
https://github.com/YOUR_GITHUB_USERNAME/otwarchive/settings/hooks
- Find and click the 'Travis CI' hook. You should see that the settings have already been filled in for Travis.
- If for some reason the settings are not correct, enter your GitHub username in the 'User' section and the token from your Travis-CI profile in the 'Token' and choose 'Update service'
- At this point, you can now merge in the code changes from the Code Setup section above and Travis-CI will automatically see that you have merged something and look for your
.travis.yml
file. Once it finds it, your tests will run!
- Use the switch next to
If you used the settings above, this is what should happen:
- When a coder submits a pull request, Travis-CI will automatically grab a copy of the changes and run our full test suite against it.
- No notifications will be sent out for pull request failures.
- When a pull request is merged into master, Travis-CI grabs a copy of the new master branch and runs it against our tests.
- If the build fails, an email will be sent to the otw-coders-extra mailing list saying that the new code does not pass testing.
- When a build passes without a state change (the build wasn't previously failing), no email will be generated.
- If the build goes from failing to passing, there will be an email.
- #otw-dev on freenode will be informed of every pass/fail merger of code.
If you have any questions regarding code development, please don't hesitate to send an email to [email protected] and we will try to get back to you as soon as possible!
- Home
- Set Up Instructions
- Docker (All platforms)
- Gitpod (Cloud-based development)
- Linux
- OS X
- Creating Development Data
- Writing and Tracking Code
- Automated Testing
- Architecture
-
Getting Started Guide
- Getting Set Up
- Your First Pull Request
- More About Git
- Jira