This article is about General Codeship Configuration.

Using Coveralls For Code Coverage

Estimated Reading Time: 4 mins

About Coveralls

Coveralls is an automated code coverage service. Starting with Code Climate and Codeship is fast and easy. Their documentation does a great job of providing more information, in addition to the setup instructions below.

Coveralls Discount Code

Thanks to our partnership with Coveralls we can provide a 25% Discount for 3 months. Use the code “coverallslovescodeship” and get started right away.

Setup For Other Languages

Coveralls supports a lot of other languages. Check out their fantastic documentation.

Codeship Pro

Setting Your Variables

To start, you need to add your Coveralls repo token to the encrypted environment variables that you encrypt and include in your codeship-services.yml file.

Coveralls Gem

Next, you’ll want to either manually install the Coveralls Gem in your Dockerfile, or add it to the Gemfile that you install your dependencies from in your Docker image build.

gem 'coveralls', require: false

Note that this will require you to be building an image that contains both Ruby and Rubygems. If the image does not contain both of these, you will be unable to install the necessary coveralls gem.

Project Configuration

Now, you’ll need to put the Covealls initializers into your spec_helper.rb or env.rb file, depending on which framework you use.

require 'coveralls'
Coveralls.wear!

If you want to combine the coverage data from different frameworks, add the following to your spec_helper.rb or env.rb.

# Coveralls with Rspec and Cucumber
require 'coveralls'
Coveralls.wear_merged!
SimpleCov.merge_timeout 3600

# MAKING SURE SIMPLECOV WORKS WITH THE PARALLEL_TESTS GEM
SimpleCov.command_name "RSpec/Cucumber:#{Process.pid.to_s}#{ENV['TEST_ENV_NUMBER']}"

Finally, you’ll you need to add a rake task that pushes your coverage report as soon as your build is finished.

require 'coveralls/rake/task'
Coveralls::RakeTask.new

Pushing Data

The last thing you’ll need to be sure to do is to actually push your data out to Coveralls. This will happen with a command either run directly or inside of a script in your codeship-steps.yml file:

- name: coveralls_push
  service: your_service
  command: bundle exec rake coveralls:push

Codeship Basic

Setting Your Variables

To start, you need to add your Coveralls repo token to a .coveralls.yml file to your codebase that contains your Coveralls key:

repo_token: YOUR_COVERALLS_TOKEN

It is also possible to set this in the environment variables for your project.

You can do this by navigating to Project Settings and then clicking on the Environment tab.

Coveralls Gem

Next, you’ll need to require the Gem in your Gemfile.

gem 'coveralls', require: false

Project Configuration

Now, you’ll need to put the Covealls initializers into your spec_helper.rb or env.rb file, depending on which framework you use.

require 'coveralls'
Coveralls.wear!

If you want to combine the coverage data from different frameworks, add the following to your spec_helper.rb or env.rb.

# Coveralls with Rspec and Cucumber
require 'coveralls'
Coveralls.wear_merged!
SimpleCov.merge_timeout 3600

# MAKING SURE SIMPLECOV WORKS WITH THE PARALLEL_TESTS GEM
SimpleCov.command_name "RSpec/Cucumber:#{Process.pid.to_s}#{ENV['TEST_ENV_NUMBER']}"

Then you need to add a rake task that pushes your coverage report as soon as your build is finished.

require 'coveralls/rake/task'
Coveralls::RakeTask.new

Pushing Data

To push the data to Coveralls, add the following after your test commands on Codeship:

bundle exec rake coveralls:push

Need More Help?

Get in touch if you need more help, or post on Stack Overflow using the tag #Codeship.

  • Ask The Helpdesk A Question
  • Code Examples And Sample Projects
    • Was This Article Helpful?