gitlab的工作流程

GitLab Shell
GitLab Shell的作用是:
处理Git命令
修改authorized keys列表
当通过SSH访问GitLab Server时,GitLab Shell会:
限制执行预定义好的Git命令(git push,git pull,git annex)
调用GitLab Rails API检查权限
执行pre-receive钩子(企业版称为Git钩子)
执行请求的动作,处理GitLab的post-receive动作
处理自定义的post-receive动作
通过http(s)访问GitLab Server,工作流程取决于是从Git仓库拉取,还是推送代码
若果是pull,GitLab Rails会全权负责处理用户鉴权和执行Git命令工作
如果是push,GitLab Rails不会进行用户鉴权,也不执行Git命令,而交由GitLab Shell执行
GitLab Workhorse
GitLab Workhorse是反向代理,会处理大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。
其他请求会反向代理到GitLab Rails应用,也就是反向代理到unicorn。