我们在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
解决这个问题的最佳方法是什么?
答案 0 :(得分:2)
如CSchulz所评论,您可以删除目录,并根据构建结果创建这些目录。
这也可能是因为这些是软链接&从备份中,这些可能会被创建为目录。因此,詹金斯无法删除它们。 如果删除或重命名这些目录,Jenkins就可以重新创建软链接。