使用 git 和 CI 的多站点部署


Multi-site deployment using git and a CI

目前,我正在使用 github 来托管我的代码存储库,然后通过将文件复制并通过 FTP 将文件粘贴到服务器上来将更新推送到我的站点。但是,我使用的主机允许 ssh 访问,必须有一种更简单的方法可以做到这一点。

我想做的是:

  • 设置一个 Jenkins(一个 CI),在实时部署之前检查我的所有代码。
  • 能够从单个存储库部署到多个站点。但是每个网站都有一个或两个唯一的文件(例如包含Google Analytics代码的视图)。

到目前为止,从我的谷歌搜索中,我可以通过他们提供的GitHub网络钩子进行部署,也可以通过Capistrano进行部署。

所以,我的问题是设置一切的最佳方法是什么?

注意:我仍然是编程n00b,所以请注意我在提问时没有考虑的任何事情

在存储库中,可以有两个根级别文件夹。一个用于站点,另一个用于包含特定于站点的文件。对于每个站点,创建一个 Jenkins 构建配置来执行以下操作:

  1. 您的 git 存储库的签出代码
  2. 执行任何生成操作
  3. 将站点文件复制到生产环境
  4. 将特定于站点的文件复制到生产环境
您可以使用

具有clean script的本地存储库,该存储库将在签出版本时根据需要更改这些特定文件中的设置。

这在 Pro Git 书籍关键字扩展部分的 git 属性章节中有所介绍:

http://git-scm.com/book/en/Customizing-Git-Git-Attributes

您可能会

发现仅使用git-ftp上传更改更简单。 此脚本将服务器上上次上传的提交的名称存储在一个特殊文件中,当您重新上传时,它仅发送自上次上传状态以来已更改的文件。 文件/目录重命名/删除之类的事情也可以正确处理。 在我们的设置中,我们发现此脚本比滚动一些更配置文件的解决方案更易于使用。