2016-12-17 35 views
1

我已经建立了一个使用Travis CI和Codacy集成的Scala/SBT项目。来源可见于https://github.com/guilgaly/itunes-dap-syncsbt-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 

要从特拉维斯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 

但在特拉维斯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 

任何想法,想法可能会导致此问题,在特拉维斯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

我想你还没有设置commitUUID env变量

+0

看起来这是正确的方向。但是检查[sbt-codacy-coverage插件代码](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'确实包含提交哈希。 –