从 Windows 共享到 Linux:Jenkins 代码部署方案调整


从 Windows 共享到 Linux:Jenkins 代码部署方案调整

在原来的环境中,192.168.1.100 是一台 Windows 服务器,并通过 Samba 共享了 versioncode 目录,Linux 服务器(controller)使用 mount -t cifs 挂载该共享目录,从而让 Jenkins 在部署时能够直接拷贝代码。

但现在 192.168.1.100 已经更换为 Linux 服务器,Samba 共享方式不再适用,我们需要调整方案。本文介绍三种可行的解决方案:


方案 1:使用 NFS(推荐)

介绍

NFS(网络文件系统)是一种允许 多个客户端挂载远程文件目录 的分布式文件系统协议。它适用于长期共享目录的场景。

特点

适用于多台客户端同时访问同一目录
支持文件直接读取和写入,就像本地磁盘一样
无需每次同步文件,改动立即生效
需要 NFS 服务器长期运行
对远程文件的读写速度受网络带宽影响

适用场景

  • 需要在多个 Linux 服务器间 共享目录(如日志、代码仓库)
  • 服务器之间 持续访问和操作文件(如 Jenkins 需要挂载远程目录)
  • 需要一个长期共享的目录,并允许多个客户端访问。

在 192.168.1.100 上配置 NFS

安装 NFS 服务器

192.168.1.100 上配置 NFS

sudo apt install nfs-kernel-server  # Debian/Ubuntu
sudo yum install nfs-utils -y       # CentOS/RHEL

创建共享目录

mkdir -p /mnt/versioncode
chmod 777 /mnt/versioncode

修改 NFS 共享配置

编辑 /etc/exports,添加:

/mnt/versioncode 10.255.100.0/24(rw,sync,no_root_squash,no_subtree_check)

⚠️ 10.255.100.0/24 表示允许 10.255.100.x 访问共享目录,若仅允许 controller 访问,则替换为 controller 的 IP。

启动 NFS 并应用配置

sudo systemctl restart nfs-server
sudo exportfs -rav

在 controller 服务器上挂载 NFS

安装 NFS 客户端

sudo yum install nfs-utils -y  # CentOS/RHEL
sudo apt install nfs-common -y # Ubuntu/Debian

手动挂载

mount -t nfs 192.168.1.100:/mnt/versioncode /mnt/samba

开机自动挂载

编辑 /etc/fstab,添加:

192.168.1.100:/mnt/versioncode /mnt/samba nfs defaults 0 0

然后执行:

mount -a

方案 2:使用 Rsync(Remote Sync) 同步文件

介绍

Rsync 是用于 同步本地和远程文件 的高效工具,采用 增量传输 方式,仅同步更改的部分,减少网络流量。

特点

支持增量同步,节省带宽
可以本地、远程、跨服务器同步
支持 SSH 进行安全传输
不支持远程直接挂载和操作文件,只能同步

适用场景

  • Jenkins 定期同步代码 到远程服务器
  • 需要高效的 远程备份和文件同步

示例(从 controller 服务器同步代码到 192.168.1.100):

rsync -avz /path/to/code/ root@192.168.1.100:/mnt/versioncode/

在 controller 服务器上安装 rsync

sudo yum install rsync -y  # CentOS/RHEL
sudo apt install rsync -y  # Ubuntu/Debian

通过 rsync 复制文件

rsync -avz /path/to/code/ root@192.168.1.100:/mnt/versioncode/

说明

  • -a 保持文件属性
  • -v 显示详细信息
  • -z 压缩数据
  • 需要 root@192.168.1.100 具备 SSH 访问权限

如果不想输入密码,可以配置 SSH 免密登录:

ssh-keygen -t rsa
ssh-copy-id root@192.168.1.100

方案 3:使用 SCP 复制

介绍

SCP(安全拷贝协议)用于 加密传输文件,基于 SSH 进行安全传输,适合一次性文件传输。

特点

传输过程加密,安全性高
操作简单,适用于一次性文件传输
每次都要传输全部文件,不支持增量同步
不能像 NFS 那样直接访问远程文件

适用场景

  • 一次性复制文件,例如从本地拷贝文件到远程服务器
  • 不需要频繁同步,只在部署时传输
  • 只需简单的一次性文件传输,不需要增量同步。

示例(将代码拷贝到 192.168.1.100):

scp -r /path/to/code/ root@192.168.1.100:/mnt/versioncode/

方案对比与选择

方式是否支持挂载是否长期挂载是否增量同步适用场景安全性适用场景是否支持多客户端
NFS✅ 是✅ 是❌ 否远程目录共享⚠️ 需要额外配置长期共享目录✅ 是
Rsync❌ 否❌ 否✅ 是远程同步文件✅ 安全定期同步文件❌ 否
SCP❌ 否❌ 否❌ 否一次性文件传输✅ 安全一次性传输❌ 否

推荐方案

  • 如果 controller 仍然需要长期访问 192.168.1.100 目录,建议使用 NFS
  • 如果只是 Jenkins 需要拷贝文件到 192.168.1.100rsync 是最简单的方式

你可以根据实际需求选择最合适的方式来调整 Jenkins 部署流程!🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XMYX-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值