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

Jenkins脚本生成文件无法通过Publish Over SSH插件传输问题咨询

解决Jenkins Publish Over SSH插件无法识别绝对路径的问题

我之前也踩过这个坑!Publish Over SSH插件默认是从Jenkins构建工作区下查找文件的,你直接填绝对路径的话,插件会自动把你输入的路径拼到工作区路径后面,自然找不到目标文件。下面给你几个可行的解决思路:

方法1:将文件复制到构建工作区(最通用)

在Publish Over SSH任务之前,添加一个执行命令的步骤(Linux用Execute shell,Windows用Execute Windows batch command),把脚本生成的文件复制到当前构建的工作区中。比如:

# Linux系统示例:复制指定路径下的所有生成文件到工作区
cp /your/absolute/path/generated-files/* ${WORKSPACE}/

之后在Publish Over SSH的「Source files」里直接填写文件名或相对路径(比如generated-file-*.tar.gz)就可以正常识别了。

方法2:全局开启绝对路径支持(需管理员权限)

如果你的Jenkins有管理员权限,可以修改插件的全局配置,允许使用绝对路径:

  • 进入「Manage Jenkins」→「Configure System」
  • 找到「Publish over SSH」配置区域,展开「Advanced」选项
  • 勾选「Use absolute paths」
    这样之后,你在SSH任务的「Source files」中直接填写文件的绝对路径就可以生效了。注意这是全局设置,会影响所有使用该插件的任务,共享服务器下建议先和管理员沟通。

方法3:修改脚本输出路径到工作区

如果脚本可以修改的话,直接让脚本把生成的文件输出到Jenkins构建工作区里。脚本中可以直接引用Jenkins的WORKSPACE环境变量,比如:

# 在脚本中设置输出目录为工作区下的子目录
OUTPUT_DIR="${WORKSPACE}/build-output"
mkdir -p ${OUTPUT_DIR}
# 后续生成文件的逻辑都输出到这个目录

这样后续SSH任务直接用相对路径build-output/*就能读取到文件,无需额外操作。

额外注意事项

  • 确保Jenkins运行用户(通常是jenkins用户)拥有读取脚本生成文件路径的权限,否则复制或直接读取都会失败
  • 多目标主机的场景下,以上方法都适用,只要源文件路径处理正确,插件会自动同步到所有配置的主机

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:34