代码之家  ›  专栏  ›  技术社区  ›  jollyroger

git post receive hook更新多个服务器

  •  2
  • jollyroger  · 技术社区  · 14 年前

    我在用 git post-receive hook 从三个分支(master、staging和stable)在三个服务器(开发、测试和生产)上部署web应用程序的版本。分支和服务器之间的配对当前在脚本中硬编码。不过,我想删除这个限制,使这个钩子可以管理无限数量的分支。可以通过以下方式完成:

    • 将每个分支的所有配置选项移动到一些单独的文件中,例如 .git/???/<branch_name>
    • 主脚本将检查此类文件是否可用于每个分支,对其进行源代码管理,然后使用该文件中的配置参数将其部署到远程服务器上。

    但是我不知道具体在哪 .git 目录我可以放这样的文件。或者也许有更好的解决方案?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Cascabel    14 年前

    你的选择,据我所知:

    • 对服务器命名使用一个更强大的约定,这样就不需要在基本域名之外进行配置。把这个留在剧本里。(即branchX->branchX deploy.example.com。)

    • 像您建议的那样,在.git目录中任意位置放置一个配置文件。如果它不是git关心的文件名,它将永远不会注意到它。我不确定 为什么? 不过,你会想这么做的。

    • 把它放到.git/config中。Git允许您定义表单的任意配置参数 branch.<name>.foo . (我不知道这是一个功能还是一个疏忽。据我所知,这并没有记录在案。)就你的情况而言,有点像 branch.master.deploy_server 设置为 development.example.com . 你的剧本就可以完成了 全部的 分支,并检查是否设置了该配置选项。(使用 git config --get .)

    • 在存储库中放置配置文件。这比藏起来好多了。你最好跟踪设置。如果需要,提供一种覆盖它们的方法-提供一个不同的配置文件作为参数,提供单独的分支/服务器作为选项,交互式提示,任何适合您的。

    就我个人而言,我可能会做最后一个。跟踪设置,即使它们只是默认设置,也不会伤害您。

    推荐文章