Gradle build in docker jenkins slave



我正在尝试创建一个用于构建gradle lambda项目的jenkins奴隶。Jenkins slave 在构建项目时抛出以下错误。

Exception in thread "main" java.lang.RuntimeException: Could not create parent directory for lock file /gradle/wrapper/dists/gradle-4.2.1-bin/dajvke9o8kmaxbu0kc5gcgeju/gradle-4.2.1-bin.zip.lck
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:43)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
/home/jenkins/workspace/ddoa-subprod/lf-security-gateway2/lf-security-gateway2
FAILURE: Build failed with an exception.
* What went wrong:
Failed to load native library 'libnative-platform.so' for Linux amd64.

请帮助我了解问题,并让我知道如何解决。

要修复此错误,请执行以下操作:What went wrong: Failed to load native library 'libnative-platform.so' for Linux amd64.执行以下操作:

  1. 检查您的 Gradle 缓存(**~user/.gradle/**本机文件夹是否存在)。
  2. 检查您的 Gradle 缓存(~user/.gradle/native文件夹是否存在以及有问题的文件,即libnative-platform.so是否存在于该目录中)。
  3. 检查上述文件夹~user/.gradle或 ~/.gradle/native 或文件:~/.gradle/native/libnative-platform.so是否具有有效权限(不应为只读。运行chmod -R 755 ~/.gradle就足够了)。

如果您根本没有看到本机文件夹,或者您的本机文件夹似乎已损坏,请使用-g--gradle-user-home选项运行 Gradle 任务,例如:gradle clean build并传递其值。

例如:如果我运行mkdir /tmp/newG_H_Folder; gradle clean build -g /tmp/newG_H_Folder,您将看到 Gradle 将填充所有必需的文件夹/文件(甚至在运行任何任务或任何选项之前都需要运行)现在都在这个新的 Gradle 主页文件夹中(即/tmp/newG_H_Folder/.gradle目录)。

从这个文件夹中,你可以复制 - 只是本机文件夹到用户的 ~/.gradle 文件夹(如果需要,请先备份 ~/.gradle 中的现有本机文件夹)(如果它已经存在) - 或者将整个.gradle文件夹复制到您的 ~(主目录)。

然后重新运行您的 Gradle 任务,它不会再出错了。

格拉德尔文档 说:https://docs.gradle.org/current/userguide/command_line_interface.html

-g, --gradle-user-home 指定 Gradle用户主目录。默认值为用户主目录中的 .gradle 目录。

注意:使用gradle <sometask> -g <a_dynamic_folder_ex_jenkins_workspace>将始终有效,因为 Gradle 将在该-g定义的文件夹中创建新的 .gradle 缓存,但这样做,它不会获得 Gradle 缓存概念的真正好处。

如果您使用的是 Gradle 的 3.4 版,那么可能是这个问题。

要解决此问题,您可以尝试将 Gradle 发行版更新到已解决此问题的 3.5 或更高版本。

我以 sudo 的身份运行命令,它通过得很好

最新更新