Jenkins Linux代理如何将构建文件/文件夹部署到远程Windows服务器
可行方案汇总
方案1:无需Jenkins插件,使用SMB工具直传(适合内网场景)
你的构建代理是Alpine Linux,可以直接安装SMB客户端完成文件传输,无需安装额外Jenkins插件:
- 第一步:在Alpine代理的构建步骤中先安装依赖包,执行命令:
apk add --no-cache samba-client cifs-utils - 第二步:提前在目标Windows服务器上开启对应文件夹的SMB共享,配置账号的读写权限,确保Alpine代理可以访问Windows服务器的445端口
- 第三步:执行传输命令,将本地产物全量上传到远程共享目录:
smbclient //<Windows服务器IP>/<共享文件夹名称> -U "<登录用户名>%<登录密码>" -c "recurse ON; prompt OFF; lcd <本地编译产物父目录>; mput <产物文件夹名称>/*"
方案2:无需Jenkins插件,使用SSH/SFTP传输(更安全,推荐)
Windows 10/Windows Server 2019及以上版本自带OpenSSH服务组件,启用后即可通过标准SFTP/SCP协议传输文件:
- 第一步:在目标Windows服务器的「设置-应用-可选功能」中安装「OpenSSH 服务器」,启动服务并设置开机自启,配置防火墙放行22端口
- 第二步:Alpine镜像默认自带scp/rsync工具,直接执行传输命令即可:
- 全量文件夹传输用scp:
scp -r -o StrictHostKeyChecking=no <本地编译产物文件夹路径> <Windows登录账号>@<Windows服务器IP>:<目标存储路径> - 大文件/增量传输推荐用rsync:
rsync -avz --delete <本地编译产物文件夹路径> <Windows登录账号>@<Windows服务器IP>:<目标存储路径>
- 全量文件夹传输用scp:
方案3:使用合规Jenkins插件可视化配置
如果你希望通过Jenkins插件配置实现,无需手写脚本,可以使用Publish Over SSH插件,该插件处于活跃维护状态,符合大多数企业安全政策:
- 完成上述方案2中Windows端OpenSSH服务的配置后,在Jenkins全局配置中添加对应的Windows SSH站点,配置登录凭证
- 在构建任务的后置步骤中选择「Send build artifacts over SSH」,配置要上传的产物路径、远程目标路径即可直接使用
注意事项
- 所有涉及账号密码的配置都建议存到Jenkins凭证管理中,不要明文写在构建脚本里
- 传输前可以加校验步骤,对比本地和远程文件的哈希值确认传输完整性
内容的提问来源于stack exchange,提问作者vel
相关产品推荐
相关产品推荐

