GitLab 培训
作者:毫末科技
邮箱:hxg@haomo-studio.com
第一章 GitLab简介
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
1.1.gitlab简史
2011年:GitLab的开始
2011年,Dmitriy对git存储库管理的选择感到不满意。所以和Valery一起,他开始构建GitLab作为解决方案。这个就是GitLab的开始。
2012年:GitLab.com
Sid第一次看到GitLab,他认为这个程序员的协作工具是一个开源的工具,所以你可以为它做出贡献。作为Ruby程序员,他检查了源代码,并对Gitlab的代码质量留下了深刻的印象,并在最初的一年里他的贡献超过了300个。他问Hacker News是否有兴趣使用GitLab.com,于是有数百人报名参加测试。2012年11月,Dmitriy制作了第一个版本的 Gitlab CI。
2013年:“我想全职工作在GitLab上”
运行GitLab的大型企业和机构要求Sid添加他们需要的功能。与此同时,Dmitriy在推特上向世界发出了他想在GitLab工作的消息。Sid和Dmitriy合作,将Gitlab企业版引入了大型企业所要求的功能。
2014年:GitLab成立
2014年,GitLab被正式注册为有限责任公司。GitLab每个月都会在22日发布一个新版本。1月22日的第一次发布:GitLab 6.5。2014年底,2014年12月,GitLab 7.6发布。在那年年底,我们向Y Combinator提交了申请。
2015年:Y Combinator
在2015年初,几乎整个GitLab团队飞往硅谷参加Y Combinator的活动。到2015年3月,团队中已经有9个人。
2016年:增长
2016年,为Gitlab做出贡献的人数已经超过1000人。超过10万个组织和数百万用户正在使用GitLab。我们的团队有100人,增加到140多人。9月份,我们宣布了我们的总体计划,筹集2000万美元的B轮融资。
1.2.gitlab的现状
Gitlab是一个开源项目,目前已经有来自世界各地的1700多人参与,Gitlab Inc 有超过35个国家的员工。现在的gitlab将所有创意作品从只读改为读写,以便每个人都可以做出贡献。
1.3.gitlab发展
1.确保每个人都能为gitlab作出贡献。
2.成为软件开发生命周期中最常用的软件。
3.完成基于约定优于配置的单个应用程序的产品愿景。
4.与聪明的同事一起工作,能够提供一种进步的工作环境。
5.保持独立,以保持价值观。由于采取外部投资,我们需要流动性事件。为了保持独立,我们希望这是一个IPO,而不是被收购。
第二章 GitLab下载安装(CE版)
2.1.下载gitlab安装包
官网下载速度较慢 建议先行下载
(1).https://about.gitlab.com/downloads/
(2).国内的源 里面可以找到最新的版本:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/
2.2.安装依赖
sudo apt-get install curl openssh-server ca-certificates postfix
2.3.配置postfix邮箱
选择 Internet Site (F12) Enter 下一步
这里设置FQDN 使用默认即可。
2.4.安装gitlab安装包
sudo dpkg -i gitlab-ce_7.10.5~omnibus-1_amd64.deb
PS:
官网配置到这里。
出现 It looks like… 表示安装成功!
2.5.配置 gitlab
这一步在官方的文档里面没有,但是如果没有配置的话,直接启动GitLab,会出现不正确的FQDN错误,导致无法正常启动。因此必须做配置。
sudo mkdir -p /etc/gitlab
sudo touch /etc/gitlab/gitlab.rb
sudo chmod 600 /etc/gitlab/gitlab.rb
sudo gedit /etc/gitlab/gitlab.rb
把external_url改成部署机器的域名或者IP地址。
2.6.对GitLab进行重配置 (这一步也是启动 GitLab)
sudo gitlab-ctl reconfigure
2.7.查看启动状态
sudo gitlab-ctl status
2.8.打开浏览器登陆
按照上面设置的external_url访问,第一次登陆默认管理员密码和用户名:
Username: root
Password: 5iveL!fe
登陆进去可做修改
第一次启动的时候,需要初始化大量的东西,经常会出现502错误,通常是由于内存不足的原因导致,所以需要准备好足够的内存。官方推荐生产环境中使用2G内存,2核CPU。虚拟机中测试1GB内存基本就可以了。
第三章 GitLab的配置与使用
1、创建新项目
1-1.登录gitlab网址成功后,点击右侧导航条上的 “+” 就可以进入创建项目的页面
1-2.在创建工程的页面,按照要求填写项目的名称和可见性等信息。
Project path:项目的路径,一般可以认为是项目的名称
Import prject from:从哪导入项目,提供Github/Bitbucket等几个选项
Description(项目的描述):可选项,对项目的简单描述
Visibility Level(项目可见级别):提供Private(私有的,只有你自己或者组内的成员能访问)/Internal(所有登录的用户)/Public(公开的,所有人都可以访问)三种选项。
2、添加和配置SSH公钥
2-1.SSH(Secure Shell)是一种安全协议,在你的电脑与GitLab服务器进行通信时,我们使用SSH密钥(SSH Keys)认证的方式来保证通信安全。
2-2.创建 SSH密钥,并将密钥中的公钥添加到GitLab,以便我们通过SSH协议来访问Git仓库。
SSH 密钥的创建需要在终端(命令行)环境下进行,我们首先进入命令行环境。通常在OS X和Linux平台下我们使用终端工具(Terminal),在Windows平台中,可以使用Git Bash工具,git客户端安装目录下git-bash.exe文件
A:进入SSH目录:cd ~/.ssh
(1)如果还没有 ~/.ssh 目录,可以手工创建一个(mkdir ~/.ssh),之后再通过cd ~/.ssh进入SSH目录。
(2)可以通过ls -l命令查看SSH目录下的文件,来确认你是否已经生成过SSH密钥;如果SSH目录为空,我们开始第二步B,生成 SSH 密钥;如果存在id_rsa.pub这个文件,说明你之前生成过SSH密钥,如何添加多个sshkey也不难,一般很少用,这里不介绍了。
B:生成SSH密钥
我们通过下面的命令生成密钥,请将命令中的YOUR_EMAIL@YOUREMAIL.COM替换为你注册gitlab时用的Email地址。
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM"
在SSH生成过程中会出现以下信息,按屏幕的提示操作即可
3、获取SSH公钥信息
SSH密钥生成结束后,根据提示信息找到SSH目录,会看到私钥id_rsa和公钥id_rsa.pub这两个文件,不要把私钥文件id_rsa的信息透露给任何人。我们可以通过cat命令或文本编辑器来查看id_rsa.pub公钥信息。
(1)通过编辑器。使用你熟悉的文本编辑器,比如 记事本、Sublime Text等软件打开id_rsa.pub,复制里面的所有内容以备下一步使用。
(2)通过cat命令。在命令行中敲入cat id_rsa.pub,回车执行后命令行界面中会显示id_rsa.pub文件里的内容,复制后在下一步使用。
(3)通过直接使用命令将id_rsa.pub文件里的内容复制到剪切板中
Windows: clip < ~/.ssh/id_rsa.pub
Mac: pbcopy < ~/.ssh/id_rsa.pub
GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub
4、添加SSH公钥到gitlab
4-1.打开gitlab的Profile配置页面,选择SSH Keys,如图:
4-2.添加SSH公钥。填写Title和Key,其中Title是Key的描述信息,Key是上面复制的SSH公钥的内容,直接粘贴到输入框中保存即可。
5、导入项目
5-1.设置下git的用户名和邮箱
在提交代码前,还需要设置下git的用户名和邮箱(最好用英文,不要出现中文),这样提交记录才会在gitlab上显示带有你名字的记录。
在命令行窗口输入(windows需要安装打开Git Bash工具才行):
git config --global user.name"your_name"
5-2.导新项目到gitlab上
如果项目存在,需要导入到gitlab,可以通过命令行直接将项目导入上去。
cd "本地存在项目的路径"
git init
git remote add origingit@gitlab.com:USERNAME/PROJECTNAME.git
git add .
git commit -m 'first git demo'
git push -u origin master
(注:将USERNAME和PROJECTNAME替换成用户名和项目的名称)
5-3.导入项目到本地
git clone"你的项目地址"
5-4.如何在gitlab上找到你的项目地址位置,请看下图:
第三章 GitLab同技术对比
1、GitLab特性
(1)内置 CI/CD :GitLab有免费的内置的连续集成/持续交付。
(2)强大的问题跟踪器:能够快速的为多个问题设置状态。
(3)周期分析:GitLab提供了一个面板,可以让团队估算一个项目产生所需要的时间。
(4)GitLab页面:GitLab页面提供了一个简单的系统,可以使GitLab知识库和GitLab CI来托管静态站点。
(5)问题面板:GitLab有问题面板,每一个问题面板的列表都是基于你的问题追踪器上的标签。
(6)内置容器注册表:GitLab容器注册中心是Docker的一个安全的私有注册中心,它允许上传和下载来自GitLab CI的图片,它与Git仓库管理完全集成。
2、Gogs特性
(1)支持活动时间线。
(2)支持 SSH 以及 HTTP/HTTPS 协议
(3)支持SMTP、LDAP和反向代理的用户认证
(4)支持反向代理子路径
(5)支持用户、组织和仓库管理系统
(6)支持仓库和组织级别Web钩子
(7)支持仓库Git钩子和部署密钥
(8)支持仓库工单(lssue)、合并请求(Pull Request)和Wiki
(9)支持添加和删除仓库协作者
(10)支持Gravatar以及自定义源
3、GitHub特性
优点:
(1)pull request,issue都是高级别feature
(2)强调个人,符合hancker更看重名誉/成就感的天性
缺点:
(1)国内访问速度太慢,
(2)不能很好的解决GB2312/GBK,对中文不够友好
(3)wiki功能太多,直接导致文档经常被分离到一个独立的站点
(4)无法解决企业内部的需求,github:fi价格过高
(5)基于git,学习曲线陡峭,企业大规模用git根本不现实。
3、GitHub、GitLab、Gogs类比
参考 :
1.官方安装:https://about.gitlab.com/downloads/#ubuntu1404
2.GitLab Documentation :http://docs.gitlab.com/ce/
3.Postfix邮箱配置指南:
http://wiki.ubuntu.org.cn/Postfix#Postfix_.E5.9F.BA.E6.9C.AC.E8.AE.BE.E7.BD.AE.E6.8C.87.E5.8D.97
4.Ubuntu 14.04下安装GitLab指南:http://www.open-open.com/lib/view/open1433584757328.html
5.GitLab的使用:
https://blog.cnbluebox.com/blog/2014/04/15/gitlabde-shi-yong/
http://docs.gitlab.com/ce/raketasks/backup_restore.html
https://www.icicletech.com/blog/gitlab-backup-made-easy
8.GitLab High Availability
https://about.gitlab.com/high-availability/