通过SFTP部署到服务器
了解如何使用Buddy自动部署到SFTP服务器
如果您刚刚接触Buddy, 推荐先查看 >>快速上手<< 以便轻易了解如何构建、测试与部署您的应用类型。
Buddy将部署变得轻而易举,允许您在每次推送到分支时自动更新服务器。 您还可以在点击时手动部署,或按时间间隔重复部署(定时部署)。
配置SFTP操作
- 创建一个新项目,选择您的Git提供商并选择您的项目所在的存储仓
- 添加新流水线并配置详细信息:名称、触发模式与要部署的分支
- 在操作列表上查找并点击SFTP:
- 配置操作相关信息:
选择身份验证模式并将详细信息提供给您的服务器
如果您在流水线中使用构建操作,请确保选择文件系统作为部署工件和处理文件的来源。
- 当就绪时就点击添加此操作以完成配置
点击测试按钮以在保存操作之前验证连接状态是否能正常连接
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/sh
echo "#!/bin/sh\n" > create-links.sh
for file in $(find . -type l); do
link=$(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中创建一个流水线,该流水线将在每次推送到存储仓时自动执行所有这些步骤:
- 将脚本
grab-links.sh
上传到存储仓 - 添加新流水线并将触发模式设置为事件推送触发
- 添加Build操作并输入将在Buddy的基础架构中运行脚本的命令:
chmod +x grab-links.sh
./grab-links.sh
- 添加SFTP操作,该操作将使用新生成的脚本
create-links.sh
上传存储仓文件 - 添加SSH操作并输入将在目标服务器上执行脚本的命令:
chmod +x create-links.sh
./create-links.sh
方案2: Git Clone
Git完全按照人们期望的方式处理符号链接:如果您将符号链接推送到存储仓并且其他人克隆了此存储仓,则符号链接将在其本地存储仓中复制。所以,基本上您需要做的就是在生产服务器上安装Git并运行:
git clone
自动化
您可以使用Buddy在每次推送存储仓时自动执行 git clone
。一个优秀的做法是添加单元测试以确保您的代码在拉取之前没有错误。
- 添加新流水线并将触发模式设置为事件推送触发
- 添加PHP单元操作并定义您的测试,它同时也预装了Composer。
- 添加将在外部存储仓上执行
git clone
的SSH操作
总结
使用Buddy上传符号链接只是该软件可以使用的众多用例之一。您可以扩展您的工作流程并配置Buddy,例如: