如何在Jenkins流水线中向Samba共享归档/发布制品?求对应DSL扩展
回答:Jenkins Pipeline 发布到 Samba 的解决方案
嘿,其实你不用找别的工具——你提到的Publish Over CIFS插件本身就支持Jenkins Pipeline DSL!我自己在项目里用过好多次,完全能实现你想要的流水线式发布到Samba共享的需求。
基本使用步骤
首先确保你已经在Jenkins上安装了Publish Over CIFS插件,然后可以通过两种方式在Pipeline中配置:
方式1:使用全局配置好的Samba服务器
先在Jenkins的「系统管理」→「系统设置」→「Publish Over CIFS」里配置好你的Samba服务器信息(包括地址、共享名、凭据等),然后在Pipeline中直接引用这个配置:
pipeline { agent any stages { stage('发布制品到Samba') { steps { publishOverCIFS( failOnError: true, // 发布失败时终止流水线 publishers: [ cifsPublisher( configName: 'MySambaServer', // 全局配置里的服务器名称 transfers: [ cifsTransfer( sourceFiles: '**/target/*.war', // 要上传的制品路径 remoteDirectory: '/prod/deploy/', // Samba共享目录 flatten: false, // 保留本地文件结构 cleanRemote: false // 不清空远程目录 ) ] ) ] ) } } } }
方式2:在Pipeline中直接指定服务器参数
如果不想依赖全局配置,也可以在Pipeline里直接定义Samba服务器的所有参数,适合动态场景:
pipeline { agent any stages { stage('动态发布到Samba') { steps { publishOverCIFS( failOnError: true, publishers: [ cifsPublisher( serverName: '192.168.1.100', // Samba服务器IP/域名 username: credentials('samba-user'), // 引用Jenkins凭据 password: credentials('samba-pass'), share: 'jenkins-artifacts', // Samba共享名 transfers: [ cifsTransfer( sourceFiles: 'dist/**/*', remoteDirectory: '/beta/' ) ] ) ] ) } } } }
几个实用提示
- 记得用
credentials()方法引用Jenkins存储的凭据,不要直接写明文密码,保证安全性 - 如果遇到上传失败,先检查Samba服务器的共享权限,确认Jenkins运行用户有读写权限
cleanRemote参数设为true会清空远程目标目录,使用时一定要谨慎
内容的提问来源于stack exchange,提问作者Markus Weninger
相关产品推荐
相关产品推荐

