git post-receive hook来更新多个服务器

时间:2010-11-11 14:04:13

标签: git deployment githooks

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

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

但是我不知道.git目录中的确切位置可以放置这些文件。或者可能有更好的解决方案?

1 个答案:

答案 0 :(得分:2)

据我所知,你的选择是:

  • 使用更强的约定进行服务器命名,因此除了基本域名之外,不需要配置。把它留在脚本中。 (即branchX - &gt; branchX-deploy.example.com。)

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

  • 将它放在.git / config中。 Git允许您定义branch.<name>.foo形式的任意配置参数。 (我不知道这是一个功能还是疏忽。据我所知,它没有记录。)在你的情况下,像branch.master.deploy_server这样的东西设置为development.example.com。然后,您的脚本可以通过所有分支,并检查是否设置了该配置选项。 (使用git config --get。)

  • 将配置文件放入存储库。这似乎比隐藏它要好得多。您也可以跟踪设置。如有必要,提供一种覆盖它们的方法 - 提供不同的配置文件作为参数,为各个分支/服务器提供选项,交互式提示,适合您的任何内容。

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