我有一个开源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 回答
这是一个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信号) .
输出包括:
所以我知道有一个阻止它进展的僵局 .
经过一些谷歌搜索后,我发现了一个针对mockito的错误(https://github.com/mockito/mockito/issues/1067) .
解决方法是禁用parallelExecution以进行测试 .
我遇到了同样的问题 . 添加到
build.sbt
这样你就可以使用log-debug来检查发生了什么 . 在我的情况下,sbt正在寻找