Ajeet Khan
Ajeet Khan

Reputation: 9190

How to setup code climate test coverage for jenkins CI

I am using code climate for code quality and test coverage. I have added the gem and code in spec_helper.rb to start the coverage. In the next step code as per the documentation: When you run your tests on CI, set the CODECLIMATE_REPO_TOKEN environment variable: $CODECLIMATE_REPO_TOKEN=******************** bundle exec rake

I tried to set the above line in the execute shell commands of jenkins. Also tried to set the environment variables CODECLIMATE_REPO_TOKEN in the Manage jenkins -> Configure System settings. But that doesn't work. I couldn't find any documentation to setup test coverage with jenkins. Any help would be appreciable.

As per the code-climate documentation

Add the codeclimate-test-reporter gem to your Gemfile:

gem "codeclimate-test-reporter", group: :test, require: nil

Start the test reporter on the very first line of spec_helper.rb or test_helper.rb:

require "codeclimate-test-reporter" CodeClimate::TestReporter.start

When you run your tests on CI, set the CODECLIMATE_REPO_TOKEN environment variable:

$ CODECLIMATE_REPO_TOKEN=**************************** bundle exec rake

(Note: This token is specific to this repo on Code Climate.)

(Note: **As an alternative to the above, you may prefer to define this token as environment variable within your CI's user interface or configuration file**.) 

Its written here that the token environment variable is to be defined within your CI server. That is what my question is where to define it in jenkins. I tried defining the global environment variable in jenkins under "Manage jenkins"->"System configuration". But it didn't work.

enter image description here

Upvotes: 7

Views: 1932

Answers (2)

Matteo Dal Grande
Matteo Dal Grande

Reputation: 120

I'm using a karma tester and nyc with mocha to create my report.(lcov.info) I crete my report and insert it in build/reports/coverage/XXXXXXXXXX/lcov.info . This path maybe is different for you.

After that I transform the lcov.info in codeclimate.XXXXX.json Finally all is merge whit sum-coverage

stage('Code Climate'){
            environment {
                CC_TEST_REPORTER_ID = credentials('7da93b1f-3602-458c-a07c-fcf36402c499')
            }
            steps{
                sh 'wget https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64  > ./cc-test-reporter'
                sh 'chmod 777  cc-test-reporter'

                sh './cc-test-reporter --debug before-build'
                sh './cc-test-reporter --debug format-coverage build/reports/coverage/server-tests/lcov.info -t lcov -o build/reports/coverage/codeclimate.server.json'
                sh './cc-test-reporter --debug format-coverage build/reports/coverage/ng/lcov.info -t lcov -o build/reports/coverage/codeclimate.frontend.json' 
                sh './cc-test-reporter --debug format-coverage build/reports/coverage/api-tests/lcov.info -t lcov -o build/reports/coverage/codeclimate.api.json'

                sh './cc-test-reporter  sum-coverage build/reports/coverage/codeclimate.*.json -p 3' 
                sh './cc-test-reporter upload-coverage -r ${CC_TEST_REPORTER_ID}'
              
                sh 'rm cc-test-reporter'
            }
        }

with

environment {
                CC_TEST_REPORTER_ID = credentials('7da93b1f-3602-458c-a07c-fcf36402c499')
            }

i extract my CC_TEST_REPORTER_ID that I have set in Manage Jenkins > Manage credentials. You can found it in https://codeclimate.com/repos/XXXXXXXXXXXXXXXX/settings/test_reporter where in XXXXXXXXXXXXXXX you need to put your codeclimate project.

Upvotes: 0

The Ancient
The Ancient

Reputation: 380

If your question is how to set an environment variable in Jenkins, you may look e.g. here: How to set environment variables in Jenkins?

Upvotes: 1

Related Questions