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

文章目录

  • 从 Windows 共享到 Linux:Jenkins 代码部署方案调整
  • 方案 1:使用 NFS(推荐)
    • 介绍
      • 特点
      • 适用场景
  • 在 192.168.1.100 上配置 NFS
      • 安装 NFS 服务器
      • 创建共享目录
      • 修改 NFS 共享配置
      • 启动 NFS 并应用配置
    • 在 controller 服务器上挂载 NFS
      • 安装 NFS 客户端
      • 手动挂载
      • 开机自动挂载
  • 方案 2:使用 Rsync(Remote Sync) 同步文件
    • 介绍
      • 特点
      • 适用场景
    • 在 controller 服务器上安装 rsync
    • 通过 rsync 复制文件
  • 方案 3:使用 SCP 复制
    • 介绍
      • 特点
      • 适用场景
  • 方案对比与选择


从 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/ [email protected]:/mnt/versioncode/

在 controller 服务器上安装 rsync

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

通过 rsync 复制文件

rsync -avz /path/to/code/ [email protected]:/mnt/versioncode/

说明

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

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

ssh-keygen -t rsa
ssh-copy-id [email protected]

方案 3:使用 SCP 复制

介绍

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

特点

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

适用场景

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

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

scp -r /path/to/code/ [email protected]:/mnt/versioncode/

方案对比与选择

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

推荐方案

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

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

你可能感兴趣的:(windows,linux,jenkins)