本文将介绍 GitLab 的基础及架构的简介,这里假设读者已经使用过代码托管平台,并使用过 git 版本控制工具html
GitLab 是目前最煊赫一时的代码托管类型的开源项目(严格来讲如今应该是 devops 类型的开源项目了,但最广为人知的功能仍是代码托管),拥有相对庞大的社区。本小节将介绍 GitLab 提供的最基础的代码托管功能git
代码托管,顾名思义就是将咱们本地的代码托管至远程仓库进行管理,这样方便团队开发与协做,也有利于用户及时同步远程仓库来自其余同事更新的代码至本地,因此最最基础的业务场景即: git clone or git pull or git fetch
和 git push
,前者是将远程仓库代码克隆或更新至本地,后者是将本地的代码变更推送至远程仓库算法
访问 gitlab 首页,注册一个 gitlab 帐号,填写基本的用户名、邮箱及密码信息便可注册,这里要注意邮箱很重要,GitLab 是用邮箱认用户的shell
注册成功后登陆,将看到以下页面,显示的是当前登陆用户的项目列表数据库
GitLab 的项目是一个很大的概念,它包揽了项目管理、wiki 文档、代码托管、持续集成/交付等功能,但一个项目只能与一个仓库关联,而且建立项目时必须初始化仓库缓存
这样,咱们就能进入到刚刚建立的项目中,从左侧菜单项能够看到项目提供了不少功能,这里就不一一介绍了,由于重点是在代码托管这个功能bash
到目前为止,咱们至关于在远程服务器建立了一个代码仓库,可是它如何与本地进行关联呢,或者说,我本地执行 git clone 或 git push 操做,远程服务器怎么认得我呢?注意上图的橙色提示就明白,远程服务器须要用户上传本地的 SSH 公钥来识别用户是谁服务器
这里先插入一段对 SSH 公钥登陆原理的介绍,其实整个过程主要使用了公钥加密、私钥解密的对称加密算法:用户将本身本机的 SSH 公钥上传至远程服务器上,登陆的时候远程服务器向用户发送一段随机序列,用户用本身本机的 SSH 私钥加密后发回远程服务器,远程服务器用事先储存的公钥进行解密,若是成功就证实用户是可信的,容许你登陆而且再也不要求密码架构
咱们得新建 SSH 公钥才能经过 SSH 拉取代码,本地生成 ssh 密钥对的方法请自行搜索app
只有将本身本地密钥上传后,咱们才能经过 ssh 密钥的方式克隆或更新远程仓库的代码
除了 ssh 密钥之外,咱们也能使用 https 的方式克隆或更新代码,区别在于 https 的方式须要输入 GitLab 的帐号名和密码
# ssh 方式
git clone git@gitlab.com:BradeHyj/ToyProject.git
# https 方式
git clone https://gitlab.com/BradeHyj/ToyProject.git
复制代码
至此,咱们已经将代码托管最最基础的功能给介绍完毕:新建代码仓库以及本地仓库的关联。能够发现,对于 GitLab 而言,其访问入口不只仅是只有 http/https ,还应该有 ssh
本小节将简单介绍 GitLab 的单机部署架构图及其相应组件
上图是官网贴出的 GitLab 架构图,官网将 GitLab 类比为一个公司办公室:
以上组件的相互协同及关联以下图所示,它们共同组成了 GitLab 的软件架构,能够看到此架构的两个关键入口:HTTP/HTTPS(TCP 80,443)和SSH(TCP 22)
架构不会是完美的设计,而更应该是可迭代的进化,每一个组件的存在必然有想要解决的问题,后续 GitLab 系列将逐一介绍各个组件“存在”的意义
参考连接