首页 文章

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

提问于
浏览
3

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

我做错了什么或这是一个错误?

样品失败: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

EDIT

在sbt:https://travis-ci.org/lucidsoftware/xtract/jobs/281081862上使用 -debug 选项失败

它做的最后一件事是

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

Edit 2

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

3 回答

  • 0

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

  • 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以进行测试 .

  • 1

    我遇到了同样的问题 . 添加到 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
    

相关问题