At Codeship, we’re pleased to be able to integrate with several third-party products across a variety of areas to ensure your CI/CD workflows are that much smoother. For example, Coveralls is an automated code-coverage service, and getting started with Coveralls and Codeship is fast and easy.
Of course, their documentation does a great job of providing more information for the wide variety of languages it supports, but this post will walk you through setting up Coveralls with Codeship. Let's start with the setup for Codeship Pro.
Coveralls and Codeship Pro
To begin, you'll 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 build 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 Coveralls 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 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
Coveralls and Codeship Basic
To begin, 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 Coveralls initializers into your spec_helper.rb
or env.rb
file, depending on which framework you use.
# 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
Thanks to our partnership with Coveralls, we can provide a 25 percent discount for three months. Use the code
coverallslovescodeship
and get started right away.