2017-09-28 2 views
3

Ich habe ein Open-Source-Scala-Projekt (https://github.com/lucidsoftware/xtract). Der Aufbau auf travis-ci bleibt beim Ausführen von Tests konsistent, sowohl für scala 2.11 als auch für 2.12. Manchmal hängt es nach dem Kompilieren und vor jeder Ausgabe von Tests, manchmal hängt es mitten in laufenden Tests. Ich habe versucht, mehrere Iterationen der travis ändern, inclding versucht, mit und ohne sudo: false, verschiedene Versionen von sbt, Splitting die sbt Befehle auf unterschiedliche Weise auf, beide oraclejdk8 und openjdk8 mit etc.sbt hängt während Tests auf travis-ci

Mache ich etwas falsch oder ist das ein Fehler?

Probenfehler: https://travis-ci.org/lucidsoftware/xtract/jobs/280974227

Mein .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

Failure mit -debug Option auf sbt: https://travis-ci.org/lucidsoftware/xtract/jobs/281081862

Das letzte, was sie tut, ist

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

bearbeiten 2

Einige Anmerkungen. Dieses Projekt hat mehrere Unterprojekte. Der Build wird angehalten, während Tests ausgeführt werden, und der Test befindet sich in einem eigenen Projekt, da sie sowohl vom Kerncode als auch von einem separaten Teilprojekt für projektspezifische specs2-Matcher abhängen.

+0

Viele Leute (einschließlich mir) verwenden Travis, um sbt Tests die ganze Zeit kein Problem zu führen, also muss das Problem vermutlich etwas mit Ihrem Projekt zu tun haben. Das Ausführen von 'sbt --debug' anstatt von' sbt' könnte helfen, den Hang aufzuspüren. Sie können auch sehen, ob Travis eine Möglichkeit bietet, einen JVM-Stack-Trace zu erhalten, wenn ein Job hängt, um bei der Fehlerbehebung zu helfen. –

+0

Haben Sie es mit [forking] versucht? (http://www.scala-sbt.org/0.12.3/docs/ Detaillierte Themen/Forking.html) aktiviert? –

+0

@ SzymonBiliński Ich habe versucht Forking. Ich habe das gleiche Problem. – Thayne

Antwort

1

suchen glaube ich endlich, was dachte ich heraus vorging.

Ich konnte das Problem im Travisci/Ci-Granat: Packer-1512502276-986baf0 Docker Container reproduzieren. Obwohl ich sbt laufen lassen musste, musste ich die sbt-launch.jar für Version 1.1.1 finden und installieren, da der installierte Bootstrapper für keine Version 1.0 oder höher funktioniert. Ich löschte mehrere Ordner aus dem Home-Ordner mit Zeug für andere Sprachen, um Speicherplatz für das Herunterladen von Artefakten freizugeben.

Nachdem es zum Stillstand gekommen war, nahm ich einen Thread-Dump des Java-Prozesses (durch Senden eines QUIT-Signals). diese

Die Ausgabe enthalten:

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" 

So wusste, dass ich es eine Sackgasse war, die es aus voran wurde verhindert.

Nach etwas googeln fand ich einen Fehler für Mockito (https://github.com/mockito/mockito/issues/1067).

Eine Problemumgehung besteht darin, parallelExecution für Tests zu deaktivieren.

1

Es ist ein 10min Compiler Timeout. Vielleicht verursachen die Speichergrenzen zu viel Swapping. -Xms2048M -Xmx2048M -Xss6M -XX:MaxPermSize=512M

+0

Das ist eine gute Idee. Leider stört es immer noch :( – Thayne

0

Ich habe das gleiche Problem. In Ihrem build.sbt

logLevel := Level.Debug 

, so dass Sie das Protokoll-debug verwenden können, um zu überprüfen, was in los ist. In meinem Fall sbt wurde

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 
+0

Ich habe versucht mit debuggen aktiviert, die letzte Zeile ist nur sbt sagen, dass es eine TaskDef für die DefaultXmlReadersSpec ausgeführt wird (siehe meine erste Bearbeitung). – Thayne

+0

haben Sie versucht, 'travis_wait 30' hinzuzufügen, als Präfix zu Ihrem sbt Befehl ?. Das ist 'install: travis_wait 30 sbt ++ $ TRAVIS_SCALA_VERSION update' –

Verwandte Themen