使用git进行部署与发送.tar.gz文件相比,有哪些独特的优势?

3

这个问题旨在区分两种部署方法之间的实际差异,而不是主观差异。请查看结尾处的列表,了解具体的概念。

我目前正在研究从构建应用程序的任何地方部署应用程序的选项。我已经阅读了很多关于git如何用于部署的内容,并且对此已经很熟悉了。我也看到过您可以简单地创建所需文件的tar.gz文件,然后将其发送到服务器。

我越想越觉得,仅编写脚本来创建和发送归档比依赖git进行部署更简单并且“更加静态”。

到目前为止,让我偏爱简单存档的主要因素是:

  • 目标位置不必安装git或任何其他工具
  • 无需在目标位置设置任何特殊密钥以进行依赖检出
  • 使用git时,部署的代码库始终大于实际部署的代码
  • 我将少一个git代码库,无需费心保持一致性
  • 在我的特定情况下,我还需要在git代码库之外构建或检索依赖项(composer、bower、grunt)
  • 我可以选择要部署的文件子集,而不是整个分支/标记
  • 准备好的软件包是我的网站的完全可工作的分发版本,几乎就像二进制文件一样

进一步阅读:


2
Git是为版本控制而设计的,而不是部署。使用正确的工具来完成工作。 - Chris
尽管如此,有许多例子显示人们正在使用它进行部署。根据我所描述的一切,我倾向于同意你的观点,但我很乐意听到你为什么这样说的具体原因。 - Alexander Trauzzi
2个回答

2
有两种不同的方法来完成这个任务。一种是将Git repo克隆到服务器上,在服务器上使用命令行进行拉取。另一种方法是使用像 http://dploy.io/ 这样的部署工具,它会将文件从repo中的 sftp 传输到服务器上。
在这两种情况下,我都会从仓库中忽略通过 (composer, bower, grunt) 安装的任何东西,并在需要时手动在服务器上使用命令行完成。我对这两种方法都很满意,并根据要部署的服务器和执行未来部署的团队选择合适的方法。

我认为这个流程最终会引入一个构建服务器。这意味着一旦构建服务器满意,它就可以将成功的归档文件放在某个地方作为部署的候选文件。更进一步的演变可能是让部署服务器构建 Docker 镜像并将其发送到某个仓库,以备使用。 - Alexander Trauzzi

2
两种方法的主要区别(除了在生产服务器上使用Git之外)是必须在网络上传输的文件数量:传输的文件越少,整个过程就越不容易出错。
这就是为什么我更喜欢使用git archive来生成所需的tar文件(指定树形结构的归档文件)。这样,我只需要传输一个文件,就像普通的归档文件一样,而且我不需要在另一端安装Git。

像 Git 的许多功能一样,我之前并不知道有存档功能!谢谢 :) - Alexander Trauzzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接