如何使用Buddy自动部署到SFTP服务器

提示
如果您刚刚接触Buddy, 推荐先查看 >>快速上手<< 以便轻易了解如何构建、测试与部署您的应用类型 。
Buddy将部署变得轻而易举 , 允许您在每次推送到分支时自动更新服务器 。您还可以在点击时手动部署 , 或按时间间隔重复部署(定时部署) 。
如何使用Buddy自动部署到SFTP服务器

文章插图
 
配置SFTP操作
  1. 创建一个新项目 , 选择您的Git提供商并选择您的项目所在的存储仓
  2. 添加新流水线并配置详细信息:名称触发模式与要部署的分支
  3. 在操作列表上查找并点击SFTP:
  4. 配置操作相关信息:
  • 选择身份验证模式并将详细信息提供给您的服务器
  •  
提醒
如果您在流水线中使用构建操作 , 请确保选择文件系统作为部署工件和处理文件的来源 。
  1. 当就绪时就点击添加此操作以完成配置
提示
点击测试按钮以在保存操作之前验证连接状态是否能正常连接
信息
Buddy的部署基于变更集 。这意味着只部署更改的文件 , 这使其闪电般快速?? 。第一次部署总是从头开始执行 , 除非您事先在服务器上设置了修订版 。
您需要了解的信息?
  • 选择存储仓作为资源以仅部署存储仓中的文件 。如果您使用构建操作 , 请选择 流水线文件系统作为资源以添加工件、已处理文件和上传的静态文件 。
  • 您可以使用环境变量将身份验证详细信息存储到您的服务器上
  • 您可以在更多选项中使用忽略路径排除要部署的文件
使用SFTP部署符号链接?为了通过SCP上传符号链接 , 通过添加-r参数来使用递归模式:
scp -r但是 , 启用该模式也会复制符号链接指向的内容 。如果我们只想复制符号链接 , 这事很麻烦 , 并且不可能用SCP以不同的方式来做 。通常 , 我们可以通过使用rsync来解决:
rsync -avz -e ssh /scr-dir user@host:/dst-dir可缺点是这种方法非常耗时 。您将在下面找到如何使用Buddy实现自动化和加速的使用说明 。
方案1: 本地脚本 + 服务器上传 + 主机脚本?第一个解决方案使用一些简单的脚本和部署操作 。首先 , 我们需要一个脚本grab-links.sh来列出文件夹中的所有符号链接 。该脚本将以递归模式搜索文件夹并创建一个文件create-links.sh , 其中包含将在目标服务器上重现符号链接的说明:
# !/bin/shecho "#!/bin/shn" > create-links.shfor file in $(find . -type l); dolink=$(readlink $file);echo "if [ ! -L $file ]; then ln -s $link $file; fi" >> create-links.sh;done现在 , 我们需要将脚本保存到一个grab-links.sh文件并执行:
chmod +x grab-links.sh./grab-links.sh这将生成create-links.sh , 您可以将其上传并在目标服务器上运行以重现您的符号链接:
chmod +x create-links.sh./create-links.sh
如何使用Buddy自动部署到SFTP服务器

文章插图
 
自动化?您可以在Buddy中创建一个流水线 , 该流水线将在每次推送到存储仓时自动执行所有这些步骤:
  1. 将脚本grab-links.sh上传到存储仓
  2. 添加新流水线并将触发模式设置为事件推送触发
  3. 添加Build操作并输入将在Buddy的基础架构中运行脚本的命令:
chmod +x grab-links.sh ./grab-links.sh
  1. 添加SFTP操作 , 该操作将使用新生成的脚本create-links.sh上传存储仓文件
  2. 添加SSH操作并输入将在目标服务器上执行脚本的命令:
chmod +x create-links.sh ./create-links.sh
如何使用Buddy自动部署到SFTP服务器

文章插图
 
方案2: Git Clone?Git完全按照人们期望的方式处理符号链接:如果您将符号链接推送到存储仓并且其他人克隆了此存储仓 , 则符号链接将在其本地存储仓中复制 。所以 , 基本上您需要做的就是在生产服务器上安装Git并运行:


推荐阅读