使用gitlab自动部署

时间:2014-11-03 19:46:09

标签: git deployment nginx gitlab ubuntu-server

我们在ubuntu服务器的办公室里运行Gitlab服务器。我正在使用每个repo的post-receive hook进行自动部署。这就是我做的,

  1. 我在post-receive文件中编写了shell脚本,以便将代码从gitlab服务器推送到我们的实际生产服务器。
  2. 因此我们的gitlab服务器中的所有repos都有post-receive hook来进行自动部署。
  3. 我在生产服务器上安装了git bare repo来接收代码gitlab服务器。
  4. 在生产服务器的裸仓库中,我写了另一个post-receive钩子来使用GIT_WORK_TREE部署代码并在同一个post-receive hook中重启nginx服务器。
  5. 现在我想通过现有的标准工具进行自动部署,因为采用这种部署方式,我需要配置所有的repo,这样会花费很多时间。有哪些其他方法可以执行此自动部署。

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

    更新:我现在想这样做,因为我对gitlab shell有问题,因为@Ciro Santilli解释道。在我遇到gitlab shell问题后,我也正在做git push production作为@Ciro Santilli回答的链接。但我想做的就是Gitlab_CI所做的事情,push to master branch我们的生产服务器应该更新。我将尝试使用Gitlab_CI,但我想知道还有其他工具可以做同样的事情。

1 个答案:

答案 0 :(得分:3)

编辑:使用Custom Hooks feature,如果您有文件系统访问权限,则不使用挂钩的原因不再适用。但是,我仍然建议使用CI,因为它是:

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

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

正如在Gitlab repository mirroring

中讨论的那样

除非您指定更多关于部署的内容,除非您希望使用Git进行部署,否则GitLab没有任何具体内容,答案将与通用Git问题相同:Deploy a project using Git push

如果您有更具体的要求,可能会有一项服务可以满足您的需求:https://github.com/gitlabhq/gitlabhq/tree/d7c50b4a95b5530ae0e2f5249cfd9a419dd940c6/app/models/project_services,但我会将其留给另一个更具体的问题。