在对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的测试期间,它会挂起的主要内容,如果未能解决你的问题,请参考以下文章
当Jboss服务器尝试从HypersonicDB数据源获取连接时,它会挂起
Azure Blob存储DownloadToStreamAsync在网络更改期间挂起
即使在配置文件中使用 .NET 4.0 后,nunit 代理也会挂起