我将在我的学校创建一个 gitlab 服务器来托管课程代码。我希望每次任何用户推送到 gitlab 时,它都会自动将项目部署到/var/www/gitdeploy/<repo-user>/<repo>/<branch>
,这样就http://<myServer>/gitdeploy/<repo-user>/<repo>/<branch>
可以访问了。
最好部署所有分支,但至少主分支也可以。所有这些都将在同一台服务器上运行。
我听说过 Gitlab CI,但不确定它是否适合我,而且我也不明白如何设置它。
我怎样才能做到这一点?
编辑: 另外,我想我应该指定我希望所有用户都使用它,希望我不需要为每个用户都配置它,而是全局地
答案1
您可以使用部署代码的 git 服务器端钩子(例如post-receive
)来完成此操作。但是,Gitlab CI 是为此设计的,您应该考虑使用它。
如果您使用钩子,钩子将是 中的 shell 脚本.git/hooks/post-receive/
。它将需要部署凭据,您需要自己编写。但是,这是钩子的一个用例。查看文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
另请参阅 gitlab 特定文档:http://doc.gitlab.com/ce/hooks/custom_hooks.html
答案2
我想到了一个可能的解决方案,在“Omnibus”安装中,我相信可以通过在中添加一些 ruby 代码来创建一个全局钩子/opt/gitlab/embedded/service/gitlab-shell/hooks/post-receive
。但是,每当您更新 gitlab 时,该钩子都会恢复为软件包版本。我建议保留该软件包以避免这种情况。