2014-11-03 111 views
2

我们的Gitlab服务器在我们的办公室运行在ubuntu服务器上。我正在使用每个回购的后接收挂钩进行自动部署。这就是我所做的,使用gitlab自动部署

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

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

生产服务器:Ubuntu的14.04LTS, 生产网络服务器:nginx的, 本地的Git服务器:gitlab。

更新:我想这样做,因为我有问题与@Ciro Santilli解释的gitlab外壳。我也在做git push production作为@Ciro桑蒂利答案的链接后提到,我有问题与gitlab外壳。但是我想要做的就是Gitlab_CI,push to master branch我们的生产服务器应该更新。我会尝试使用Gitlab_CI,但我想知道是否有任何其他工具可以做到这一点。

回答

3

编辑:与Custom Hooks feature,如果您有文件系统访问权限,不使用挂钩的旧理由不再适用。不过,我还是建议你使用CI因为它是:

原因自定义鱼钩功能之前没有使用钩子:

  • 他们都回购之间共享
  • 他们可能会产生合并当你更新gitlab壳
  • 他们是安全关键gitlab和接触他们的冲突打开您漏洞

就像在讨论:Gitlab repository mirroring

除非你指定有关更多的除了你想用Git做的部署,没有什么GitLab具体说明它,答案将与通用Git问题相同:Deploy a project using Git push

如果你有更具体的需求ements,可能有一个服务可以做到你想要的:https://github.com/gitlabhq/gitlabhq/tree/d7c50b4a95b5530ae0e2f5249cfd9a419dd940c6/app/models/project_services,但是我会留下一个更具体的问题。

+0

Gitlab_CI不错,我会试一次。 – niren 2014-11-03 20:30:30

+0

将[ansible](http://www.ansible.com/application-deployment)用于我的自动部署? – niren 2014-11-05 07:21:33

+0

@niren我从来没有碰过任何人,所以我不知道=( – 2014-11-05 08:20:11