《CI/CD+DevOps》持续集成之gitlab
先来BB下关于GitLab的课前知识
git的优点
git是分布式的,svn不是
git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。
GIT分支和SVN的分支不同
分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。
git有一个强大的代码仓库管理系统 - gitlab
可以很方便的管理权限、代码review,创建、管理project
GitLab介绍
GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理非常重要。
版本:GitLab 分为社区版(CE) 和企业版(EE)。
配置:建议CPU2核,内存2G以上。
Gitlab的服务构成:
Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 轻量级的反向代理服务器。(go)
logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)
参考资料:https://www.jianshu.com/p/b04...
gitlab官方安装:https://about.gitlab.com/install/ gitlab清华大学镜像:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/
开始安装
https://packages.gitlab.com/gitlab/gitlab-ce/install
按照上边连接地址给出的各种安装方法选择合适的方式进行安装,这里选择rpm安装
执行命令: curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
说明一下,官网提供的是gitlab-ee版本(企业版)的在线安装,本博客这里提供的是gitlab-ce版本(社区版)的在线安装,社区版是免费的。
通过上面的方式访问的是国外的gitlab仓库站点,如果速度慢的话,就是用下面国内的站点,都一样。
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash yum install gitlab-ce
启动gitlab
在安装完gitlab后,启动之前,先做一个基本配置,如果安装成功的话,在/etc/gitlab/目录下会有一个gitlab.rb文件,使用vim打开它。
vim /etc/gitlab/gitlab.rb
将external_url 'http://ip_address'
这一行中的ip_address字符串替换成你自己的ip地址。然后重新编译配置。
gitlab-ctl reconfigure
注意:执行 reconfigure 命令会把gitlab的nginx组件的配置还原,导致自定义修改的端口以及域名等都没有了。
至于其他配置,比如邮箱啊,端口啊(gitlab默认使用80端口),开启的进程数,访问超时时间之类的配置请参看官方文档,这里就不做详细介绍了。
GitLab常用命令
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;
常用目录
日志地址:/var/log/gitlab/ # 对应各服务的打印日志
服务地址:/var/opt/gitlab/ # 对应各服务的主目录