Linux运行的Jenkins如何访问本地文件或Windows服务器网络目录文件
Linux Jenkins访问Windows共享目录加载文件到Workspace方案
最优最简方案推荐
按照实现成本从低到高排序,优先选第一种:
方案1:SMB共享挂载(适合频繁访问共享目录的场景)
操作步骤:
- 先在Jenkins部署的Linux节点安装依赖工具
Debian/Ubuntu系执行:sudo apt install -y cifs-utils
RHEL/CentOS系执行:sudo yum install -y cifs-utils - 新建本地挂载目录:
sudo mkdir -p /mnt/win_smb_share - 临时挂载测试:
参数说明:vers对应SMB协议版本,Win10/Server2016及以上版本填3.0即可;uid和gid设置为Jenkins运行用户的ID,避免Jenkins没有权限读取挂载后的文件sudo mount -t cifs //<Windows服务器IP>/<共享文件夹名> /mnt/win_smb_share -o username=<Windows共享账号>,password=<共享密码>,vers=3.0,uid=$(id -u jenkins),gid=$(id -g jenkins) - 如需开机自动挂载,在
/etc/fstab末尾添加如下配置:
新建//<Windows服务器IP>/<共享文件夹名> /mnt/win_smb_share cifs credentials=/etc/smb_auth,vers=3.0,uid=jenkins,gid=jenkins 0 0/etc/smb_auth文件保存账号密码,内容为:
执行username=<你的Windows共享账号> password=<你的共享密码>sudo chmod 600 /etc/smb_auth避免密码泄露。
挂载完成后,你可以直接在Pipeline里用cp命令把文件拷到Workspace:
stage('复制共享文件到Workspace') { steps { sh 'cp /mnt/win_smb_share/目标文件 ${WORKSPACE}/' } }
方案2:smbclient直接拉取(适合偶尔访问、不想挂载目录的场景)
操作步骤:
- 安装工具:
sudo apt install -y smbclient(Debian/Ubuntu系)或sudo yum install -y smbclient(RHEL/CentOS系) - Pipeline中直接调用命令拉取文件即可:
注意:生产环境不要明文写密码,将账号密码存入Jenkins凭据管理,调用时用凭据变量即可pipeline { agent any stages { stage('拉取Windows共享文件') { steps { // 拉取单个文件 sh 'smbclient //<Windows服务器IP>/<共享文件夹名> -U "共享账号%共享密码" -c "get 目标文件名 ${WORKSPACE}/目标文件名"' // 拉取整个目录所有文件打开下面这行即可 // sh 'smbclient //<Windows服务器IP>/<共享文件夹名> -U "共享账号%共享密码" -c "recurse ON; prompt OFF; mget *"' } } } }
本地目录文件加载方案
如果是要把Jenkins节点本地的文件拷到Workspace,直接执行cp命令即可:sh 'cp /本地目录的完整路径/目标文件 ${WORKSPACE}/'
内容的提问来源于stack exchange,提问作者STNub
相关产品推荐
相关产品推荐

