【问题标题】:Multi-site deployment using git and a CI使用 git 和 CI 进行多站点部署
【发布时间】:2012-06-03 00:24:00
【问题描述】:

目前,我使用 github 来托管我的代码仓库,然后通过 FTP 将文件复制和粘贴到服务器上,将更新推送到我的站点。但是,我使用的主机允许 ssh 访问,必须有一种更简单的方法来执行此操作。

我要做的是:

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

到目前为止,从我的 Google-ing 来看,我既可以通过他们提供的 GitHub 的 webhook 进行部署,也可以通过 Capistrano 进行部署。

所以,我的问题是设置所有内容的最佳方法是什么?

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

【问题讨论】:

  • 最佳是主观的,很大程度上取决于具体情况。
  • 好吧,就我在上述问题中描述的场景而言,我的意思是最好的

标签: php git github continuous-integration web-deployment


【解决方案1】:

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

  1. 您的 git 存储库的签出代码
  2. 执行任何构建操作
  3. 将站点文件复制到生产环境
  4. 将站点特定文件复制到生产中

【讨论】:

    【解决方案2】:

    您可以使用具有clean script 的本地存储库,它会在签出版本时根据需要更改这些特定文件中的设置。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-12
        • 1970-01-01
        • 2012-03-26
        • 2015-04-06
        • 1970-01-01
        • 2013-09-19
        • 2019-10-18
        • 1970-01-01
        相关资源
        最近更新 更多