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

Jenkins Freestyle项目Artifact Deployer部署路径异常求助

问题分析与解决办法

兄弟,你这个问题的核心是Artifact Deployer插件并不支持直接通过HTTP URL来部署构件,它把你填的http://my.target.machine:8080/common/repos当成了本地文件路径的一部分,所以才会拼接到Jenkins服务器的本地目录(/opt/jenkins/)后面,变成了奇怪的/opt/jenkins/http:/my.target.machine:8080/common/repos,自然也就没法把文件传到目标地址了。

下面给你两种针对性的解决方案,你可以根据目标机器的实际情况选择:

情况1:目标地址是HTTP上传接口(需通过POST请求上传文件)

Artifact Deployer是为文件系统/SSH/FTP这类文件传输场景设计的,不支持HTTP接口上传。这种情况下你可以换两种方式:

  • 用Shell命令直接调用:在Jenkins构建步骤里加一个「执行Shell」(Windows环境选「执行Windows批处理命令」),用curl或者wget发送上传请求。举个例子,如果目标接口支持表单上传,命令大概是这样:
    curl -X POST -F "artifact=@*.properties" http://my.target.machine:8080/common/repos
    
    注意:这里的参数(比如artifact)要和目标接口要求的字段名一致,如果有身份验证,还要加上对应的参数(比如-u username:password)。
  • 用HTTP Request插件:安装Jenkins的HTTP Request插件,配置一个上传请求,指定要上传的*.properties文件,以及目标HTTP地址、请求方法和必要的请求头/参数。

情况2:目标机器是可通过文件协议访问的服务器(如Linux/Windows服务器)

如果你的http://my.target.machine:8080/common/repos对应的是目标机器上的某个本地目录(比如Web服务器的静态文件目录),那你应该用文件传输协议来部署:

  • SSH方式(推荐Linux服务器):在Artifact Deployer插件里选择「SSH」作为部署方式,先在Jenkins里配置好目标机器的SSH服务器信息(IP、端口、用户名密码/密钥),然后在「Remote file location」里填目标机器上的绝对本地路径(比如/var/www/html/common/repos,而非HTTP URL)。
  • SMB方式(Windows服务器):如果是Windows机器,用SMB共享路径,比如\\my.target.machine\common\repos,配置好共享权限和Jenkins的访问权限后,Artifact Deployer就能直接把文件传过去。

最后提醒一下:不管用哪种方式,先手动测试一下上传流程(比如用curl命令在本地测试能不能传到目标地址),确认没问题再配置到Jenkins里,这样能更快排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:10:55