GitFTP-Deploy

Avatar of Jan Östlund
Jan Östlund

DigitalOcean 为您的旅程的每个阶段提供云产品。立即开始使用 $200 免费积分!

Jan 是 GitFTP-Deploy 的创建者,现在已经更新到 v2.0 版。他写信告诉我关于 GitFTP-Deploy 的信息,我认为它非常酷。正如您将在本文中了解到的那样,它是一款基于 macOS Git 的部署软件。我认为它值得了解,因为它很好地介于免费(通常更复杂)的自行构建解决方案和每月或每年订阅费解决方案之间。GitFTP-Deply 采用一次性付费模式。这有点棘手,因为它本质上属于广告性质。所以 **完全披露:** Jan 没有为此付费,但我选择使用联盟链接。

让我们设定场景。假设您是一位网页自由职业者,并且几乎完成了客户的新网站。多年来,您已经从痛苦的经历中学到,不要直接通过 FTP 编辑文件。很容易在没有记录变更和变更者的情况下进行破坏性变更。现在,您正在使用 Git 来管理文件的版本。

为什么要使用版本控制?

使用版本控制系统对您的项目有很多好处。即使您是一个非常有条理的人,您仍然可能会对像 `index-2017-01-12.html` 或 `header_image_final_final_v2.svg` 这样的命名系统感到困惑。它真的是最终版本吗?您如何知道这些版本与上一个版本之间到底有什么不同?

版本控制系统 (VCS,如 Git) 强制在任何给定时间只存在一个版本的您的文件。所有过去的版本的文件都整齐地打包在 VCS 中。当您需要它时,您可以随时请求任何版本,您将拥有该项目的完整快照。

每次您保存项目的新的版本时,您的 VCS 要求您提供对变更的简短描述。此外(如果它是代码/文本文件),您可以准确地查看文件中更改的内容。VCS 帮助您了解您的项目在不同版本之间如何演变。

部署 / 上传

VCS 虽然很有用,但它并不能直接帮助您将文件上传到实时网站。(我们将此称为 *部署*。)

部署文件非常容易。使用 FTP 客户端(例如 Transmit)通过 FTP 或 SFTP 将文件直接上传到您的服务器。网站的初始发布特别容易:只需上传所有文件即可。

当您对网站进行更改时,您还需要上传文件。但是...哪些文件?您还记得您更改了哪些文件吗?如果您的恐慌的客户打电话告诉您网站崩溃了,您知道您上次上传文件时发生了什么变化吗?

如果您正在使用 Git,很容易看到。但仍然,Git 不进行部署,并且手动检查哪些文件已更改以及移动哪些文件容易出错且乏味。您仍然需要一种智能的方法来仅上传和部署已更改的文件。

那么您还有哪些其他选项来部署文件呢?一种选择是在服务器上安装 Git。然后就像您在本地从您的 Git 存储库中推送和拉取一样,您可以从服务器上的该存储库中拉取,并且服务器将拉取最新的更改。不过,这并非适合所有人。它需要对服务器的 shell 访问权限,而许多共享主机解决方案根本没有提供这种访问权限。

另一种可能性是依赖第三方云服务,例如 DeployBotSpringloopsBeanstalk。这些选择都不错,但有潜在的缺点。

  • 这些服务需要每月或每年付费,无论您是否正在积极使用它们。
  • 设置外部 Git 存储库可能需要一些时间,并且可能很复杂。
  • 依赖第三方服务也会增加风险。当您想要部署时,部署服务可能无法使用。
  • 部署速度取决于该服务。您的部署之前可能还有很长的其他部署队列。

看看 GitFTP-Deploy

让我们看看我的另一种选择:GitFTP-Deploy。GitFTP-Deploy 是一款原生 macOS 应用程序,它只上传自上次部署以来的更改文件(通过 SFTP、FTP 或 FTPS)。您无需记住您更改、添加或删除了哪些文件。

由于 GitFTP-Deploy 从您的本地 Git 存储库中读取发生了哪些更改,因此您也会养成对项目使用 Git 的习惯:一旦文件被提交,它也就可以部署了。

GitFTP-Deploy 的另一个功能可以简化您的部署,即它能够运行部署前和部署后脚本。您是否使用 JavaScript 编译器(如 Babel)或 CSS 预处理器(如 Stylus)?您是否正在连接和压缩资产?可以通过该应用程序自动运行这些任务。

其他时候,只需提交最新的更改,它就会自动推送到服务器上,只需要一个 Git 提交命令就可以完成。

入门

您可以在不到两分钟的时间内开始部署您的文件。

1) 创建一个新网站

2) 指向您的本地存储库并选择要开始部署的提交

3) 设置您的服务器连接

4) 点击部署

也许您的工作流程更复杂?您需要更多功能?

您可以指定要在本地和服务器上运行的脚本,以及在上传前和上传后运行的脚本。例如,在上传之前,您可能需要运行您最喜欢的 JavaScript 编译器或连接和优化生产环境 JavaScript 文件的 Gulp 脚本。

或者,也许您正在使用另一个任务运行器(如 Grunt)的工作流程?Grunt 也可以配置为帮助您优化图像、压缩脚本、编译预处理器以及无数其他操作。

运行 gulp --production

运行任务的能力非常强大。例如,即使 WordPress 也有 WP-CLI,这意味着您可以用脚本编排诸如数据库同步和设置更新之类的事情,并将其与您的部署一起执行。

其他使用说明

如果您不希望将构建文件置于版本控制之下,可以将此文件夹添加到“始终上传”中。

使用 GitFTP–Deploy 并不意味着您不能使用 GitHub 或其他第三方托管 Git 存储库服务。只需确保在部署之前从那里拉取更改即可。

团队使用

虽然 GitFTP–Deploy 不是专门为团队构建的,但你仍然可以使用它。最简单的方法是让一个人来处理部署。另一个更高级的选项是在服务器上运行 GitFTP-Deploy。

这种方式可能不适合大型团队,因为提交来自许多不同的个人。但是,GitFTP-Deploy 将尝试检查哪个分支和提交是上次部署的。