2016-12-17 6 views
1

Я создал проект Scala/SBT с интеграцией Travis CI и Codacy. Источники видны на https://github.com/guilgaly/itunes-dap-sync.sbt-codacy-coverage не может загрузить данные из Travis CI

Я хотел, чтобы иметь возможность просматривать отчеты покрытия кода в Codacy, поэтому я добавил следующие SBT плагины:

addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.0") 
addSbtPlugin("com.codacy" % "sbt-codacy-coverage" % "1.3.7") 

И я был в состоянии загрузить данные об охвате в Codacy со следующими командами:

export CODACY_PROJECT_TOKEN=<my token> 
sbt clean coverage test 
sbt coverageReport 
sbt coverageAggregate 
sbt codacyCoverage 

Чтобы автоматически загружать данные покрытия из сборки Travis CI, я создал переменную CODACY_PROJECT_TOKEN среды для проекта, и использовали следующую конфигурацию: .travis.yml

language: scala 
scala: 
    - 2.12.1 
jdk: 
    - oraclejdk8 
script: 
    - sbt clean coverage test 
after_success: 
    - sbt coverageReport 
    - sbt coverageAggregate 
    - sbt codacyCoverage 

Но в журнале сборки Travis CI, я вижу, что codacyCoverage не удается, с java.lang.RuntimeException: Failed to upload data. Reason: Request handler not found: /2.0/coverage//scala:

[info] Loading project definition from /home/travis/build/guilgaly/itunes-dap-sync/project 
[info] Set current project to itunes-dap-sync (in build file:/home/travis/build/guilgaly/itunes-dap-sync/) 
[info] Defining {.}/*:javaHome 
[info] The new value will be used by *:compilers, *:console::compilers and 6 others. 
[info] Run `last` for details. 
[info] Reapplying settings... 
[info] Set current project to itunes-dap-sync (in build file:/home/travis/build/guilgaly/itunes-dap-sync/) 
[info] Uploading coverage data... 
java.lang.RuntimeException: Failed to upload data. Reason: Request handler not found: /2.0/coverage//scala 
    at scala.sys.package$.error(package.scala:27) 
    at com.codacy.CodacyCoveragePlugin$$anonfun$7.apply(CodacyCoveragePlugin.scala:79) 
    at com.codacy.CodacyCoveragePlugin$$anonfun$7.apply(CodacyCoveragePlugin.scala:64) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1$$anonfun$apply$2.apply(FileHelper.scala:21) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1$$anonfun$apply$2.apply(FileHelper.scala:19) 
    at scala.Option.map(Option.scala:145) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1.apply(FileHelper.scala:19) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withTokenAndCommit$1.apply(FileHelper.scala:18) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withCommit$2.apply(FileHelper.scala:34) 
    at com.codacy.api.helpers.FileHelper$$anonfun$withCommit$2.apply(FileHelper.scala:33) 
    at scala.Option.map(Option.scala:145) 
    at com.codacy.api.helpers.FileHelper$.withCommit(FileHelper.scala:33) 
    at com.codacy.api.helpers.FileHelper$.withTokenAndCommit(FileHelper.scala:18) 
    at com.codacy.CodacyCoveragePlugin$.com$codacy$CodacyCoveragePlugin$$codacyCoverageCommand(CodacyCoveragePlugin.scala:64) 
    at com.codacy.CodacyCoveragePlugin$AutoImport$$anonfun$baseSettings$2.apply(CodacyCoveragePlugin.scala:31) 
    at com.codacy.CodacyCoveragePlugin$AutoImport$$anonfun$baseSettings$2.apply(CodacyCoveragePlugin.scala:30) 
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) 
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40) 
    at sbt.std.Transform$$anon$4.work(System.scala:63) 
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 
    at sbt.Execute.work(Execute.scala:237) 
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) 
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
[error] (*:codacyCoverage) Failed to upload data. Reason: Request handler not found: /2.0/coverage//scala 

Любая идея идея, что может вызвать эту проблему, видимую в сборке Travis CI, но не в моем местном SBT строить?

Примечание: issue opened at GitHub

+0

Примечание: вопрос разрешен через https://github.com/codacy/sbt-codacy-coverage/pull/40. Версия 1.3.8 (https://github.com/codacy/sbt-codacy-coverage/releases/tag/1.3.8) решила проблему. Проблема заключалась в том, что Travis добавлял переменные env с пустыми значениями, и плагин не отбрасывал эти переменные env. – pedrorijo91

ответ

2

java.lang.RuntimeException: Failed to upload data. Reason: Request handler not found: /2.0/coverage//scala

кажется что-то не по пути с // Скале

Я думаю, я нашел эту проблему здесь: https://github.com/codacy/codacy-api-scala/blob/master/src/main/scala/com/codacy/api/service/CoverageServices.scala#L16

Я думаю, что вы не установили переменную env commitUUID

+0

Похоже, это правильное направление для изучения. Но проверяя код плагина [sbt-codacy-coverage plugin] (https://github.com/codacy/sbt-codacy-coverage/blob/1.3.7/src/main/scala/com/codacy/CodacyCoveragePlugin.scala#L54), он должен вернуться к использованию переменной 'TRAVIS_COMMIT' (или' TRAVIS_PULL_REQUEST_SHA', если она доступна, в случае запроса на перенос), поэтому она должна работать как есть ('TRAVIS_COMMIT', кажется, правильно установлен). Я собираюсь открыть проблему с sbt-codacy-coverage, мы увидим ... –

+0

Вы пытались повторить эти переменные env в сборке, просто чтобы подтвердить, правильно ли они установлены? – pedrorijo91

+0

Да, я добавил несколько команд эха. 'CI_COMMIT' и' TRAVIS_PULL_REQUEST_SHA' не отображаются, но 'TRAVIS_COMMIT', похоже, содержит хеш фиксации. –