Как настроить покрытие кода климатическими тестами для jenkins CI

Я использую климат кода для качества кода и покрытия тестами. Я добавил драгоценный камень и код в spec_helper.rb, чтобы начать покрытие. На следующем шаге код в соответствии с документацией: Когда вы запускаете свои тесты на CI, установите переменную среды CODECLIMATE_REPO_TOKEN: $CODECLIMATE_REPO_TOKEN=******************** bundle exec rake

Я попытался установить указанную выше строку в командах оболочки выполнения jenkins. Также попытался установить переменные среды CODECLIMATE_REPO_TOKEN в разделе «Управление jenkins» -> «Настройка параметров системы». Но это не работает. Я не смог найти никакой документации для настройки тестового покрытия с помощью jenkins. Любая помощь будет ценной.

Согласно код-климат документации

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

gem "codeclimate-test-reporter", группа: :test, требование: nil

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

требуется "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**.) 

Здесь написано, что переменная среды токена должна быть определена на вашем сервере CI. Вот в чем мой вопрос, где это определить в jenkins. Я попытался определить глобальную переменную среды в jenkins в разделе «Управление jenkins» -> «Конфигурация системы». Но это не сработало.

введите здесь описание изображения


person Ajeet Khan    schedule 16.09.2015    source источник
comment
ты запустил его локально?   -  person phoet    schedule 16.09.2015
comment
@phoet У меня есть настройка сервера jenkins для запуска сборки по запросу на вытягивание github   -  person Ajeet Khan    schedule 16.09.2015
comment
как это отвечает на мой вопрос?   -  person phoet    schedule 21.09.2015
comment
@phoet Я не понял твоего вопроса. Как я могу запустить его локально. Я использую сервер jenkins, с которым мне нужно интегрировать код-климат.   -  person Ajeet Khan    schedule 21.09.2015
comment
Я спрашивал, когда вы интегрируете драгоценный камень в свой spec_helper.rb и запускаете свои спецификации локально с токеном, это работает? jenkins — это просто еще одна среда, в которой вы его запускаете. если он работает локально, единственная проблема может быть в среде вашего ci-сервера.   -  person phoet    schedule 22.09.2015
comment
@phoet Я не установил токен локально в своей среде rails. Я пытался установить токен на сервере jenkins, как написано в документации, определяющей этот токен как переменную среды в пользовательском интерфейсе или файле конфигурации вашего CI. Посмотреть правки   -  person Ajeet Khan    schedule 22.09.2015
comment
а, теперь я понимаю вашу проблему. как вы вызываете свой тестовый прогон? через грабли?   -  person phoet    schedule 24.09.2015
comment
@phoet В jenkinns CI я выполняю тестовые примеры rspec, используя команду rspec spec. Куда мне нужно добавить токен репо кода-климата?   -  person Ajeet Khan    schedule 25.09.2015
comment
@phoet Любое предложение?   -  person Ajeet Khan    schedule 28.09.2015
comment
вам нужно добавить к этому вызову переменную среды, т.е. CODECLIMATE_REPO_TOKEN=XXX_YOUR_TOKEN_HERE_XXX rspec spec   -  person phoet    schedule 01.10.2015
comment
@phoet, да, я сделал это на сервере Дженкинса. В разделе конфигурации проекта в оболочке build->execute я добавляю строку, но это не влияет на климат кода в отношении покрытия кода.   -  person Ajeet Khan    schedule 01.10.2015
comment
можешь выложить скриншот того, что именно ты настроил?   -  person phoet    schedule 08.10.2015
comment
@phoet, пожалуйста, ознакомьтесь с изменениями, чтобы увидеть скриншот моих команд на сервере jenkins.   -  person Ajeet Khan    schedule 09.10.2015
comment
вы выполняете тесты через пакет exec rake rspec И в другой раз через спецификацию rspec!   -  person phoet    schedule 12.10.2015
comment
@phoet Я пытался выполнить только с одной командой rspec 'CODECLIMATE_REPO_TOKEN=******************************* rspec spec', но все равно не работает   -  person Ajeet Khan    schedule 13.10.2015


Ответы (2)


Если ваш вопрос заключается в том, как установить переменную среды в Jenkins, вы можете посмотреть, например. здесь: Как установить переменные среды в Jenkins?

person The Ancient    schedule 30.09.2015
comment
Нет, я пытался настроить переменную среды, думая, что она должна работать для меня. Но мой вопрос в другом. Пожалуйста, прочитайте это. - person Ajeet Khan; 30.09.2015
comment
Я это сделал, и все же есть две возможные интерпретации: 1. вы предполагаете, что установка переменной среды не работает так, как это описано в документации, и вы ищете другой способ передать значение климатическому покрытию или 2. вы не уверены, что переменная среды установлена ​​​​в процессе Jenkins. Что правильно? - person The Ancient; 30.09.2015
comment
Ты прав. На самом деле я не знал, как настроить и запустить code-climate для покрытия кода с моим сервером jenkins. Я делал удар и испытание с двумя возможными интерпретациями, данными вами. - person Ajeet Khan; 30.09.2015
comment
У вас есть доступ по ssh к серверу, на котором работает Дженкинс? - person The Ancient; 30.09.2015

Я использую тестер karma и nyc с mocha для создания своего отчета. (lcov.info) Я создаю свой отчет и вставляю его в build/reports/coverage/XXXXXXXXXX/lcov.info . Этот путь может быть другим для вас.

После этого я превращаю lcov.info в codeclimate.XXXXX.json Наконец все сливается с 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'
            }
        }

с участием

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

я извлекаю свой CC_TEST_REPORTER_ID, который я установил в Manage Jenkins > Manage credentials. Вы можете найти его в https://codeclimate.com/repos/XXXXXXXXXXXXXXXX/settings/test_reporter, где в XXXXXXXXXXXXXXX вам нужно поместить свой проект codeclimate.

person Matteo Dal Grande    schedule 12.10.2020