Почему не удается запустить тесты через пользователя jenkins на подчиненном билде с отсутствующим scala-library.jar? - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь запустить задание jenkins, которое не выполняется из-за: java.lang.RuntimeException: Missing scala-library.jar При запуске этой строки: /usr/lib/jvm/java-1.8.0/bin/java -Xmx4250M -Dsbt.log.noformat=true -jar /tmp/jenkins/slaves/build-slave-cb996aa/tools/org.jvnet.hudson.plugins.SbtPluginBuilder_SbtInstallation/default/bin/sbt-launch.jar 'set credentials += Credentials("Artifactory Realm", $ARTIFACTORY_HOST, $USER, $PASSWORD)' assembly

При запуске от моего собственного пользователя на компьютере или от пользователя root, оно работаетнормально (получает артефакты из jFrog, компилирует, запускает тесты и упаковывает jar), но при запуске от пользователя jenkins происходит сбой.

Я обнаружил, что при запуске из root он находит библиотеку по пути /root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.11/scala-library-2.11.11.jar

Я использую sbt.version = 0.13.8 и scalaVersion := "2.11.11" Я явно не хочуработа jenkins с использованием root, мы все знаем, что это неправильно.Полный стек:

java.lang.RuntimeException: Missing scala-library.jar
        at scala.sys.package$.error(package.scala:27)
        at sbt.Defaults$$anonfun$scalaInstanceFromUpdate$1$$anonfun$file$1$1.apply(Defaults.scala:382)
        at sbt.Defaults$$anonfun$scalaInstanceFromUpdate$1$$anonfun$file$1$1.apply(Defaults.scala:382)
        at scala.Option.getOrElse(Option.scala:120)
        at sbt.Defaults$$anonfun$scalaInstanceFromUpdate$1.file$1(Defaults.scala:382)
        at sbt.Defaults$$anonfun$scalaInstanceFromUpdate$1.apply(Defaults.scala:384)
        at sbt.Defaults$$anonfun$scalaInstanceFromUpdate$1.apply(Defaults.scala:374)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:235)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
[error] (*:scalaInstance) Missing scala-library.jar

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

У меня была похожая проблема пару недель назад. Если я правильно помню обстоятельства, моя сборка SBT использовала плагин coursier (в результате ~/.coursier & mdash; %HOME%\.coursier в Windows & mdash; каталог, созданный и поддерживаемый при сборке), и я также использовал локальное хранилище артефактов ( Nexus OSS , в моем случае).

Моей проблемой оказалась версия плагина coursier, которую использовала моя сборка. Если вы используете coursier v1.0.0-RC2 (или, возможно, v1.0.0-RC3 ) или более раннюю версию, это может объяснить вашу проблему.

Решением было удаление каталогов .coursier и .ivy2 (которые локально кэшируют некоторые артефакты), изменение версии coursier на V1.0.0-RC4 или более поздней и повторное попробуйте построить. (В вашем случае эти каталоги будут на вашем Jenkins сервере, в домашней учетной записи jenkins.)

0 голосов
/ 13 мая 2018

выглядит так, как путь к библиотеке с пользователем root указывает на .cache .. Вы пытались очистить кеш.

А также вы можете попробовать выполнить следующую команду, полученную из

https://github.com/sbt/sbt-assembly

AssemblyOption в сборке: = (AssemblyOption в сборке) .value.copy (includeScala = true)

...