解决 Jenkins 构建错误:ln builds/lastSuccessfulBuild /root/.jenkins/jobs/BeepnRide/jobs/43-Server/jobs/BR1.1.2QA-Build/lastSuccessful 失败

83次阅读
没有评论

问题描述

在迁移 Jenkins 到新机器后,所有 Jenkins 作业都可以成功运行,但是每次构建都会出现以下错误:

ln builds/lastSuccessfulBuild /root/.jenkins/jobs/BeepnRide/jobs/43-Server/jobs/BR1.1.2QA-Build/lastSuccessful failed
java.nio.file.DirectoryNotEmptyException: /root/.jenkins/jobs/BeepnRide/jobs/43-Server/jobs/BR1.1.2QA-Build/lastSuccessful
    at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
    ...

解决方案

以下解决方案提供了多种方法来解决这个问题,请根据实际情况选择适合的方法。

方案1:修复 Azure 存储支持的问题

如果你的 Jenkins 在 Kubernetes 上运行,并且使用 Azure 存储作为后端存储,那么可能是因为 Azure 存储不支持默认情况下的符号链接导致的。你可以根据以下步骤来解决这个问题:

  1. 在你的 PersistentVolume 的 YAML 配置中,添加 mountOptions,其中包括 mfsymlinks,这将允许在 Azure 存储上创建符号链接。示例如下:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  storageClassName: azurefile
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  azureFile:
    secretName: azure-secret
    shareName: jenkins
  mountOptions:
    - dir_mode=0777
    - file_mode=0777
    - mfsymlinks

方案2:手动修复错误的目录

如果你不是在 Azure 存储上运行 Jenkins,或者其他情况导致了这个错误,你可以尝试手动修复这个问题。以下是一种可能的方法:

  1. 登录到 Jenkins 所在的服务器:
    ssh jenkins-machine

  2. 停止 Jenkins 主节点(确保没有正在运行的作业):
    sudo service jenkins stop

  3. 查找所有出现错误的目录:
    find /var/lib/jenkins/jobs -type d \( -name "last*Build" -o -name "lastStable" -o -name "lastSuccessful" \)

  4. 检查错误目录列表,确保它们是需要修复的目录。

  5. 对错误目录进行重命名,添加 “.err” 后缀:
    find /var/lib/jenkins/jobs -type d \( -name "last*Build" -o -name "lastStable" -o -name "lastSuccessful" \) -exec mv {} {}.err \;

  6. 重新启动 Jenkins:
    sudo service jenkins start

  7. 如果 Jenkins 服务器重新启动成功并且运行正常,可以删除那些带有 “.err” 后缀的目录。

方案3:查看详细日志以定位问题

如果以上解决方案无法解决问题,你可以查看更详细的日志以进一步定位问题。可能是特定的构建或作业引起了此问题,通过查看相关的构建日志或 Jenkins 日志,你可能会找到导致错误的原因。

方案4:联系 Jenkins 社区或支持

如果你尝试了以上的解决方案仍然无法解决问题,或者你认为问题可能与 Jenkins 的特定设置或插件有关,建议联系 Jenkins 社区或支持寻求帮助。他们可能能够为你提供更具体的指导和解决方案。

请注意,以上解决方案可能根据你的具体情况和环境而有所不同。在进行任何更改之前,请确保你对系统和配置有充分的了解,并且最好在进行操作之前备份相关数据。

正文完