Jenkins: DirectoryNotEmptyException: ../最后成功



我们在Docker容器中运行Jenkins 1.651.1。在某个时刻,我们决定将容器移动到另一个环境。

我们有一个 cron 作业,它可以创建容器卷的备份:

tar -cvpzf jenkins-backup.tar -C jenkins-volume/_data/ . --exclude ".m2"

在新环境中,我们创建了一个新的 Jenkins docker 卷:

docker volume create --name jenkins-volume

我们将备份untar卷内 + 重新创建了一个 jenkins 实例并将其与卷连接

一切正常,除了我们有时会收到意外的"错误"消息。它不会破坏任何东西,但经常出现:

Started by user ********
ln builds/lastSuccessfulBuild /var/jenkins_home/jobs/xxx/lastSuccessful failed
java.nio.file.DirectoryNotEmptyException: /var/jenkins_home/jobs/xxx/lastSuccessful
    at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
    at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108)
    at java.nio.file.Files.deleteIfExists(Files.java:1165)
    at sun.reflect.GeneratedMethodAccessor473.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at hudson.Util.createSymlinkJava7(Util.java:1233)
    at hudson.Util.createSymlink(Util.java:1151)
    at hudson.model.Run.createSymlink(Run.java:1840)
    at hudson.model.Run.updateSymlinks(Run.java:1821)
    at hudson.model.Run.execute(Run.java:1736)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
ln builds/lastStableBuild /var/jenkins_home/jobs/xxx/lastStable failed
java.nio.file.DirectoryNotEmptyException: /var/jenkins_home/jobs/xxx/lastStable
    at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
    at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108)
    at java.nio.file.Files.deleteIfExists(Files.java:1165)
    at sun.reflect.GeneratedMethodAccessor473.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at hudson.Util.createSymlinkJava7(Util.java:1233)
    at hudson.Util.createSymlink(Util.java:1151)
    at hudson.model.Run.createSymlink(Run.java:1840)
    at hudson.model.Run.updateSymlinks(Run.java:1822)
    at hudson.model.Run.execute(Run.java:1736)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
[EnvInject] - Loading node environment variables.
Building in workspace /var/jenkins_home/jobs/xxx/workspace
 > git rev-parse --is-inside-work-tree # timeout=10
... and it works further and fine

解决这个问题的最佳方法是什么?

正如 CSchulz 所评论的那样,您可以删除目录,这些目录将根据构建结果创建。

这也可能是因为这些是软链接,来自备份,这些可能被创建为目录。因此,詹金斯无法删除它们。如果删除或重命名这些目录,Jenkins 可以重新创建软链接。

相关内容

最新更新