CD/CD-Gitlab文档总结

Gitlab

一,gitlab概论

1.什么是gitlab?

gitlab是一个开源分布式的版本控制系统。用Ruby语言完成。

Gitlab主要实现管理项目源代码,对源代码进行版本控制,以及代码复用与查找。

2. Gitlab与Github的不同?

gitlab与github相同点:两者都是提供代码托管服务,在很大程度上gitlab是仿照github来完成的。

gitlab与github的不同点:最大的不同在于github创建私有仓库收费,而gitlab创建私有仓库是免费的。

PS:从代码私有性方面来看,公司不希员工获得全部的代码,这个时候gitlab无疑是最佳的选择。但对于开源项目而言,github依然是代码托管的首选平台。

3.gitlab的优势和应用场景

1.开源免费,搭建简单,维护成本较低,适合中小型公司。

2.权限管理,能实现代码对部分人可见,确保项目的安全性.

3.离线同步,保证我们可以不实时依赖网络对代码提交

二.gitlab服务构成

gitlab作为一个分布式代码托管软件,它必然有相关的服务组件去支持这个庞大的系统。

在这里插入图片描述

unicorn:gitlab的核心程序。

nginx,作为gitlab的proxy代理,处理http/https以及静态资源访问请求。

gitlab-workhorse:用于处理文件的上传和下载

gitlab-shell:用于处理git clone ,git pull,git push等命令。

Logrotate:用于处理保存所有的gitlab数据相关信息。

Postgresql:用于保存所有的gitlab数据相关信息

redis:用于数据库的缓存,加快前台访问速度,及读写速度。

postgresql:gitlab使用的数据库。

三. gitlab部署

1.下载gitlab
[root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server postfix wget
[root@gitlab ~]# yum localinstall gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm -y
2.配置gitlab
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
#配置访问的gitlab的url
13 external_url 'http://gitlab.zhangxianwei.com'
#配置邮箱
52 ### Email Settings
#开启邮箱
53 gitlab_rails['gitlab_email_enabled'] = true
#发件人
54 gitlab_rails['gitlab_email_from'] = '[email protected]'
#发件人显示名称
55 gitlab_rails['gitlab_email_display_name'] = 'yunwei_zhang'

519 gitlab_rails['smtp_enable'] = true
520 gitlab_rails['smtp_address'] ="smtp.163.com"
521 gitlab_rails['smtp_port'] = 25
522 gitlab_rails['smtp_user_name'] ="[email protected]"
#授权码
523 gitlab_rails['smtp_password'] = "zhang837404975"
524 gitlab_rails['smtp_domain'] = "163.com"
525 gitlab_rails['smtp_authentication'] = "login"
526 gitlab_rails['smtp_enable_starttls_auto'] = true
#加密访问
527 gitlab_rails['smtp_tls'] = true

3.关闭一些吃配置的软件
1385 prometheus['enable'] = false
4.初始化gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
5.配置host解析(没有公网的话)
6.测试

​ 1.登录gitlab系统测试

​ 2.测试邮箱是否正常

[root@gitlab gitlab]# gitlab-rails console
irb(main):011:0> Notify.test_email('[email protected](收件人)','主题','内容').deliver_now

四. 用户,组,仓库之间的关系

1.创建组dev

2.使用dev组的身份创建一个test的项目

3.创建用户,zhangsan,lisi

4.将zhangsan,lisi加入dev组,分配权限,zhangsan管理人员,lisi开发人员

4.验证身份权限,zhangsan,lisi(测试用户上传,下载,合并的功能是否合理)

5.使用root的身份创建一个公开的项目

​ 验证zhangsan,lisi是否能看见

五.gitlab汉化

1.点击—>右上角的用户—>settings–>preferences–>language–>简体中文(语言的选择仅仅是汉化了一部分内容)

2.github,gitee等开源社区下载对应gitlab版本的汉化包

[root@gitlab ~]# gitlab-ctl stop		#必须停止gitlab
[root@gitlab ~]# tar -xf gitlab-12-0-stable-zh.tar.gz
#将语言包覆盖到下面目录下
[root@gitlab ~]# /usr/bin/cp -r  gitl^C-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
#报错属于正常,动态文件
^Hcp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-12-1-stable-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-12-1-stable-zh/tmp’

六.gitlab的备份及恢复

1. gitlab数据备份

1.变更gitlab的备份路径,以及备份的保留时长

[root@backup ~]# vim /etc/gitlab/gitlab.rb
 #默认保存位置,可修改
 336 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
#保存多久,单位秒,只保存最近7天
 344 gitlab_rails['backup_keep_time'] = 604800

2.修改配置文件后,重新加载

[root@backup ~]# gitlab-ctl reconfigure

3.手动执行备份命令

[root@backup ~]# gitlab-rake gitlab:backup:create

4.写入定时任务,每天备份

[root@gitlab ~]# crontab -e
00 02 * * * gitlab-rake gitlab:backup:create

2. gitlab数据恢复

gitlab数据恢复会将所有数据恢复到备份的那一刻,相当于虚拟机的快照

1.停止gitlab

[root@gitlab ~]# gitlab-ctl stop unicorn
[root@gitlab ~]# gitlab-ctl stop sidekiq
[root@gitlab ~]# gitlab-ctl stop nginx #(关闭nginx的web界面,防止恢复期间上传代码)

2.恢复备份(备份名不要带后缀)

#从1571384612_2019_10_18_12.0.3编号备份中恢复
[root@backup ~]# ll /var/opt/gitlab/backups/
-rw------- 1 git git 143360 Oct 18 15:43 1571384620_2019_10_18_12.0.3_gitlab_backup.tar
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1571384612_2019_10_18_12.0.3

3.重启gitlab服务

[root@gitlab ~]# gitlab-ctl restart

4.检查有无服务启动错误

[root@backup ~]# gitlab-ctl status
run: alertmanager: (pid 19751) 8447s; run: log: (pid 7628) 11459s
run: gitaly: (pid 19761) 8447s; run: log: (pid 7623) 11459s
run: gitlab-monitor: (pid 19779) 8446s; run: log: (pid 7619) 11459s
run: gitlab-workhorse: (pid 19789) 8446s; run: log: (pid 7621) 11459s
run: grafana: (pid 19797) 8446s; run: log: (pid 7634) 11459s
run: logrotate: (pid 48661) 1245s; run: log: (pid 7615) 11459s
run: nginx: (pid 19817) 8445s; run: log: (pid 7610) 11459s
run: node-exporter: (pid 19822) 8444s; run: log: (pid 7617) 11459s
run: postgres-exporter: (pid 19830) 8444s; run: log: (pid 7636) 11459s
run: postgresql: (pid 19835) 8443s; run: log: (pid 7625) 11459s
run: prometheus: (pid 19845) 8443s; run: log: (pid 7632) 11459s
run: redis: (pid 19853) 8442s; run: log: (pid 7638) 11459s
run: redis-exporter: (pid 19935) 8442s; run: log: (pid 7630) 11459s
run: sidekiq: (pid 19943) 8442s; run: log: (pid 7611) 11459s
run: unicorn: (pid 19949) 8441s; run: log: (pid 7614) 11459s

七.gitlab升级

1.关闭gitlab服务

[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq
[root@gitlab-ce ~]# gitlab-ctl stop nginx #防止升级期间web界面上传数据

2.备份gitlab 数据,防止升级失败

[root@gitlab ~]# gitlab-rake gitlab:backup:create

3.下载gitlab的RPM包并进行升级

[root@gitlab ~]# yum localinstall gitlab-ce-12.1.1-ce.0.el7.x86_64.rpm  #localinstall升级依赖包

4.升级到gitlab-ce-12-1版本后, 需要使用对应的汉化进行汉化.

#上文有汉化教程

八.Gitlab更改默认Nginx

应用场景:如果一台服务器搭建了gitlab仓库,性能剩余,想在这台服务器上跑一个小网站?

九.gitlab的页面

[root@gitlab ~]# yum localinstall gitlab-ce-12.1.1-ce.0.el7.x86_64.rpm #localinstall升级依赖包


4.升级到gitlab-ce-12-1版本后, 需要使用对应的汉化进行汉化.

```sh
#上文有汉化教程
发布了48 篇原创文章 · 获赞 1 · 访问量 1466

猜你喜欢

转载自blog.csdn.net/weixin_43876317/article/details/103511379
cd