用gitlab自动部署

我们有在我们的办公室在Ubuntu服务器上运行的Gitlab服务器。 我正在做自动部署使用后从每个回购钩。 这就是我所做的,

  1. 我在post-receive文件中编写了shell脚本,将代码从gitlab服务器推送到我们的实际生产服务器。
  2. 所以在我们的gitlab服务器中的所有回购都有post-receive hook来自动部署。
  3. 我在生产服务器上安装了git裸回购接收代码gitlab服务器。
  4. 在生产服务器的裸回购,我写了另一个post-receive钩子部署代码使用GIT_WORK_TREE并重新启动nginx服务器在相同的post-receive钩子。

现在我想通过现有的标准工具进行自动部署,因为使用这种部署方式,我需要configuration所有的回购,这样会花费很多时间。 有什么其他的方式来做这个自动部署。

生产服务器 :ubuntu 14.04LTS, 生产 Web 服务器 :nginx, 本地git服务器 :gitlab。

更新:我现在想这样做,因为我有问题与@Ciro Santilli解释的gitlabshell。 而我也做git push production @Ciro桑蒂利答案的链接后,我有问题与gitlabshell提到。 但是我想要做的就是Gitlab_CI所做的, push to master branch我们的生产服务器应该被更新。 我会尝试与Gitlab_CI,但我想知道有没有其他工具可以做同样的事情。

编辑:与自定义挂钩功能 ,旧的理由给不使用挂钩不适用了,如果你有文件系统访问。 不过,我仍然建议使用CI,因为它是:

  • 更容易维护,特别是在存储库中的.yaml 配置
  • 更容易与存储库隔离,因此不太可能将其分解

在“自定义挂钩”功能之前不使用挂钩的原因:

  • 他们在所有回购中共享
  • 当你更新gitlab shell时,它们可能会产生合并冲突
  • 他们对gitlab至关重要,触摸它们会让你感到脆弱

就像在Gitlab存储库镜像中所讨论的一样

除非你指定更多关于你的部署而不是你想用Git来完成,否则没有任何GitLab具体说明它,答案将与通用Git问题相同: 使用Git push部署项目

如果你有更具体的要求,可能会有一个服务,你想要什么: https : //github.com/gitlabhq/gitlabhq/tree/d7c50b4a95b5530ae0e2f5249cfd9a419dd940c6/app/models/project_services ,但我会离开这另一个更具体的问题。