Jenkins迁移,ln(java.nio.file.DirectoryNotEmptyException)错误

机器搬迁,要把jenkins服务器迁移到其他的机器上,下面是操作步骤:

  1. 停掉tomcat
  2. .jenkins/workspace文件夹太大,按理说这个可以不迁移,里面就是check的代码,及其构建产物
  3. zip -r jenkins-bak.zip ~/.jenkins,对.jenkins文件夹进行zip压缩。
  4. copy jenkins-bak.zip到新机器,unzip jenkins-bak.zip
  5. 启动tomcat

服务启动后,所有的任务console会报这个错误:

    ln builds/lastSuccessfulBuild ***/lastSuccessful failed
    java.nio.file.DirectoryNotEmptyException: ***/.jenkins/jobs/newlabs_biz/lastSuccessful
    .
    .
    .
    ln builds/lastStableBuild ***/.jenkins/jobs/newlabs_biz/lastStable failed
    java.nio.file.DirectoryNotEmptyException: ***/.jenkins/jobs/newlabs_biz/lastStable

console报这个错误,但不影响job运行。原因是jenkins ln命令执行失败,将命令直接在linux中执行报错,信息为ln不能对文件夹创建硬链接(原因自行google)。

错误原因:

zip -r命令,在遇到文件链接的时候,会自动把目标文件拉去过来进行压缩,打进压缩包中;实际上在jenkins中,***/lastSuccessful是个链接文件,而经过zip、unzip变成了文件夹,所以迁移后的jenkins再进行ln操作,就会出现上述的错误。

解决方法:

知道了原因,解决方法就简单了,删除所有job的 ***/lastSuccessful、lastStable这两个文件夹,可以手动创建文件链接(当然也可以不创建,后续再执行job会自动生成)。

One thought on “Jenkins迁移,ln(java.nio.file.DirectoryNotEmptyException)错误

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)