在对travis-ci的测试期间,它会挂起

时间:2017-09-28 18:04:03

标签: scala sbt travis-ci

我有一个开源scala项目(https://github.com/lucidsoftware/xtract)。对于scala 2.11和2.12,在运行测试时,travis-ci的构建始终挂起。有时它会在编译之后和测试的任何输出之前挂起,有时它会在运行测试的过程中挂起。我已经尝试了几次迭代更改travis,包括尝试使用和不使用sudo: false,不同版本的sbt,使用oraclejdk8和openjdk8等以不同方式拆分sbt命令。

我做错了什么还是这个错误?

示例失败:https://travis-ci.org/lucidsoftware/xtract/jobs/280974227

我的.travis.yml:

language: scala

scala:
  - 2.11.11
  - 2.12.3

jdk:
  - openjdk8

dist: trusty
sudo: false

cache:
  directories:
    - $HOME/.ivy2/cache
    - $HOME/.sbt/

after_success:
  - sbt ++$TRAVIS_SCALA_VERSION package
  - |
    if [ -n "$TRAVIS_TAG" ] || ([ "$TRAVIS_PULL_REQUEST" == false ] && [ "$TRAVIS_BRANCH" == master ])
    then
      mkdir ~/.pgp
      echo $PGP_PUBLIC | base64 --decode > ~/.pgp/pubring
      echo $PGP_SECRET | base64 --decode > ~/.pgp/secring
      echo "Publishing snapshot"
      sbt ++$TRAVIS_SCALA_VERSION xtract/publishSigned xtractTesting/publishSigned
    fi
deploy:
  api_key: $GITHUB_AUTH
  file:
    - xtract-core/target/**/*.jar
    - testing/target/**/*.jar
  file_glob: true
  provider: releases
  skip_cleanup: true
  on:
    tags: true

install: sbt ++$TRAVIS_SCALA_VERSION update
before_cache:
  #Avoid unncessary cache updates
  - find $HOME/.ivy2 -name "ivydata-*.properties" -print -delete
  - find $HOME/.sbt  -name "*.lock" -print -delete

修改

在sbt:https://travis-ci.org/lucidsoftware/xtract/jobs/281081862

上使用-debug选项失败

它做的最后一件事是

[debug] Running TaskDef(com.lucidchart.open.xtract.DefaultXmlReadersSpec, specs2 Specification fingerprint, false, [SuiteSelector])

修改2

一些笔记。该项目有多个子项目。构建在运行测试时暂停,测试在他们自己的项目中,因为它们依赖于核心代码,以及特定于项目的specs2匹配器的单独子项目。

3 个答案:

答案 0 :(得分:1)

这是一个10分钟的编译器超时。也许内存限制导致交换太多。 -Xms2048M -Xmx2048M -Xss6M -XX:MaxPermSize=512M

答案 1 :(得分:1)

我想我终于弄清楚发生了什么。

我能够在travisci / ci-garnet:packer-1512502276-986baf0 docker容器中重现该问题。虽然为了让sbt运行,我必须找到并安装版本1.1.1的sbt-launch.jar,因为安装的引导程序不适用于任何版本1.0或更高版本。我从主文件夹中删除了几个文件夹,其他语言的东西可以释放磁盘空间来下载工件。

在它停滞后我接受了java进程的线程转储(通过发送一个QUIT信号)。

输出包括:

Found one Java-level deadlock:
=============================
"specs2-6":
  waiting to lock monitor 0x00007fc6a4b9fb68 (object 0x00000000997e39f0, a sbt.internal.inc.classpath.ClasspathFilter),
  which is held by "specs2-3"
"specs2-3":
  waiting to lock monitor 0x00007fc6d0df7298 (object 0x0000000098f700b0, a sbt.internal.inc.classpath.ClasspathUtilities$$anon$1),
  which is held by "specs2-6"

所以我知道有一个阻止其进展的僵局。

经过一些谷歌搜索后,我发现了mockito(https://github.com/mockito/mockito/issues/1067)的错误。

解决方法是禁用parallelExecution以进行测试。

答案 2 :(得分:0)

我遇到了同样的问题。添加到您的build.sbt

logLevel := Level.Debug

这样您就可以使用log-debug来检查发生了什么。在我的情况下,sbt正在寻找

sbt-chain: module revision found in cache: com.fasterxml.jackson#jackson-parent;2.8
[debug]         tried /home/travis/.ivy2/local/com.fasterxml.jackson/jackson-bom/2.8.11/jars/jackson-bom.jar
[debug]         tried https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.8.11/jackson-bom-2.8.11.jar
[debug] CLIENT ERROR: Not Found url=https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.8.11/jackson-bom-2.8.11.jar
[debug]         tried /home/travis/.sbt/preloaded/com.fasterxml.jackson/jackson-bom/2.8.11/jars/jackson-bom.jar
[debug]         tried file:////home/travis/.sbt/preloaded/com/fasterxml/jackson/jackson-bom/2.8.11/jackson-bom-2.8.11.jar
[debug]         tried https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.8.11/jackson-bom-2.8.11.jar
[debug] CLIENT ERROR: Not Found url=https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-bom/2.8.11/jackson-bom-2.8.11.jar