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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在对travis-ci的测试期间,它会挂起相关的知识,希望对你有一定的参考价值。

我有一个开源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

编辑

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

它做的最后一件事是

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

编辑2

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

答案

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

另一答案

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

我能够在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以进行测试。

另一答案

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

以上是关于在对travis-ci的测试期间,它会挂起的主要内容,如果未能解决你的问题,请参考以下文章

由于lambda闭包或调度程序问题,程序可能会挂起

当Jboss服务器尝试从HypersonicDB数据源获取连接时,它会挂起

Azure Blob存储DownloadToStreamAsync在网络更改期间挂起

即使在配置文件中使用 .NET 4.0 后,nunit 代理也会挂起

Java JDBC Oracle SQL 查询每隔几个月就会挂起一次

在服务中删除和创建性能计数器时,它可能会挂起该服务