You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线执行脚本时找不到服务器上已存在的文件求解

Jenkins流水线执行Shell脚本文件找不到问题的修复方案

问题重现

执行的Shell命令:

build_date='2022-10-13'
ui_tag_value=`cat /data/lib/jenkins/workspace/ui_tag.properties | grep ${build_date}= | cut -d'=' -f2`

错误信息:

cat: can't open '/data/lib/jenkins/workspace/ui_tag.properties': No such file or directory

直接在服务器执行命令正常,但Jenkins流水线执行报错,已尝试修改权限和路径无效。

可行修复方案

  • 确认Jenkins工作目录实际路径
    Jenkins的工作空间路径可能因节点配置、代理设置或流水线参数变化。在流水线中先执行pwd和ls -l /data/lib/jenkins/workspace/命令,查看该路径下的实际文件列表,确认ui_tag.properties是否存在于Jenkins运行时的上下文路径中。

  • 使用Jenkins内置变量引用工作空间
    不要硬编码绝对路径,改用Jenkins提供的WORKSPACE环境变量,它会自动指向当前流水线的工作空间路径。修改命令为:

    build_date='2022-10-13'
    ui_tag_value=$(cat "${WORKSPACE}/ui_tag.properties" | grep "${build_date}=" | cut -d'=' -f2)
    

    建议用$()替代反引号,语法更清晰且支持嵌套。

  • 检查Jenkins运行用户权限
    即使文件存在,Jenkins进程的运行用户(通常是jenkins用户)可能没有该目录的访问权限。执行以下命令确认权限:

    sudo -u jenkins ls -l /data/lib/jenkins/workspace/ui_tag.properties
    

    如果报错,给jenkins用户添加该目录的读权限:

    sudo chown -R jenkins:jenkins /data/lib/jenkins/workspace/
    sudo chmod -R 755 /data/lib/jenkins/workspace/
    
  • 确认流水线是否使用代理节点
    如果流水线配置了远程代理节点,命令会在代理服务器上执行,而非Jenkins主服务器。此时需要确认代理节点上是否存在/data/lib/jenkins/workspace/ui_tag.properties文件,或者将文件同步到代理节点的对应路径。

  • 避免工作空间清理导致文件丢失
    检查流水线是否启用了Clean before checkout之类的选项,这类操作会清空工作空间,导致文件被删除。可以在流水线的SCM配置中禁用该选项,或者确保ui_tag.properties文件在流水线执行前被正确同步到工作空间。

内容的提问来源于stack exchange,提问作者Harshad Solanki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:01:18