Gitlab Server
Gitlab 基本概述
1、什么是Gitlab ?
Gitlab是一个开源分布式的版本控制系统。 Ruby语言开发完成。
Gitlab主要实现的功能、管理项目源代码、对源代码进行版本控制、以及代码复用与查找。
1、Gitlab与Github的不同 ?
Github与Gitlab的相同点:两者都是提供代码托管服务,在很大程度上Gitlab是仿照Github来做的。
Github与Gitlab的不同点:最大的不同在于github创建私有仓库收费、gitlab创建私有仓库免费。
PS:从代码私有性方面来看,公司不希望员工获取全部的代码,这个时候Gitlab 无疑是最佳的选择。但对于开源项目而言,Github 依然是代码托管的首选平台。
Gitlab 的优势和应用场景
1.开源免费,搭建简单、维护成本较低、适合中小型公司。
2.权限管理。能实现代码对部分人可见,确保项目的安全性。
3.离线同步,保证我们不在实时依赖网络环境进行代码提交。
Gitlab Server 安装配置
1、环境配置
关闭防火墙、SELINUX
开启邮件服务
systemctl start postfix
systemctl enable postfix
2、部署Gitlab
1.安装gitlab依赖包
yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python # gitlab-ce 10.x.x以后的版本需要依赖policycoreutils-python
2.添加官方源(一般使用ce版,不使用ee版)
#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash #curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3.安装 Gitlab
#yum 安装 #yum install -y gitlab-ce #Gitlab包下载 #wget https://mirror.tuna.tsinghua.edu.cn/gitlab-ee/yum/el7/gitlab-ee-13.0.6-ee.0.el7.x86_64.rpm wget https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.0.6-ce.0.el7.x86_64.rpm yum localinstall -y gitlab-ce-13.0.6-ce.0.el7.x86_64.rpm
3.配置Gitlab服务,访问域名以及邮箱
![](https://img2020.cnblogs.com/blog/2174174/202103/2174174-20210303105621930-165624128.png)
vim /etc/gitlab/gitlab.rb #配置域名 external_url 'http://gitlab.precious.com' #配置邮箱 ### Email Settings gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = '2370046629@qq.com' gitlab_rails['gitlab_email_display_name'] = 'gitlab.precious.com' #推送邮箱的时候发送域名链接 ### GitLab email server settings ###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html ###! **Use smtp instead of sendmail/postfix.** gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "2370046629@qq.com" gitlab_rails['smtp_password'] = "jpelqyfvphydeaia" #这个是授权码,而不是QQ密码 gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true
4.初始化Gitlab服务,启动Gitlab服务
#初始化 gitlab-ctl reconfigure #启动 重启 停止 gitlab-ctl start | restart | stop | status #PS: 每次修改/etc/gitlab/gitlab.rb文件 都需要重新初始化 gitlab-ctl reconfigure
5.访问Gitlab服务,浏览器访问域名gitlab.precious.com(外网需要做域名解析,内网需要增加hosts文件)用户名为root, 需要自己设置密码
Gitlab 中文汉化
1.使用git下载汉化补丁包gitlab中文汉化传送门
#wget https://gitlab.com/xhang/gitlab/-/tree/12-3-stable-zh/gitlab-12-3-stable-zh.tar.gz wget https://gitlab.com/xhang/gitlab/-/archive/12-3-stable-zh/gitlab-12-3-stable-zh.tar.gz tar xf gitlab-12-3-stable-zh.tar.gz [root@localhost ~]# cat gitlab-12-3-stable-zh/VERSION #查看汉化版本 12.3.5 PS:汉化包最好好gitlab版本一致
2.停止gitlab,进行中文汉化
[root@localhost ~]# gitlab-ctl stop [root@localhost ~]# \cp -r gitlab-12-3-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/ [root@localhost ~]# gitlab-ctl start
web端
Gitlab 开发代码提交处理流程
1、公司代码提交合并流程
- PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员
- 开发人员领取任务后,在本地使用git clone 拉取代码库
- 开发人员创建开发分支(git checkout -b dev),并运行开发
- 开发人员完成之后,提交到本地仓库(git commit)
- 开发人员在gitlab界面上申请分支合并请求(Merge request)
- PM在gitlab上Mark done确认开发完成,并关闭ssue。这一步在提交合并请求可以通过描述中填写"clone #1"等字样,可以直接关闭issue
Gitlab 用户组 用户 项目的关系?
![](https://img2020.cnblogs.com/blog/2174174/202103/2174174-20210303110145124-540877224.png)
1.创建组
2.创建项目--->项目隶属于某个组
3.创建用户,设定密码,为用户分配权限
用户:zhansan 开发者
关闭gitlab 注册功能
#Git全局设置(用户/邮箱 自定义) git config --global user.name "Administrator" git config --global user.email "admin@example.com" #创建一个新的仓库 git clone http://gitlab.precious.com/python-web/cmdb.git cd cmdb touch README.md git add README.md git commit -m "add README" git push -u origin master #推送现有文件夹 cd existing_folder git init #初始化 git remote add origin http://gitlab.precious.com/python-web/cmdb.git git add . git commit -m "Initial commit" git push -u origin master #推送现有的GIt存储库 cd existing_repo git remote rename origin old-origin git remote add origin http://gitlab.precious.com/python-web/cmdb.git git push -u origin --all git push -u origin --tags
以上使用的方式是HTTP 每次推送代码需要输入密码,下面我们使用git克隆方式:(设置SSH密钥Key, root和其它用户配
git remote -v git remote remove origin git remote add git@gitlab.precious.com:python-web/cmdb.git #设置SSH 密钥 [root@localhost cmdb]# ssh-keygen [root@localhost cmdb ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+UUlpwZQclOr1kn7p0NpjppNJGTxJg1/EWfmcYOWyV0zhsWkP8AZjTnvxZJthOuRrtEQ5dRSoZ383uw/emRnP0xmClqYVhaHvAYm628hmbSmP0B3GjiUbNiE4jwddFSSTS1CLSdfmjt8aoaYUQXRb1IKGjoDNFq+4UGoE3lgL30z6J26DJ3hZG3ogyK6nmZ2vZcu/PnySYkAtd69xt/Md7Hl8RvwxF8DpCjw0qkM7C6mAWirfoeRQ6gQON/SiK87Hb1HPafgYprRKQBeXKZgT5Um/l83asrthxKTv0BFvQ/tTtTInYTAmUGB3WKOSZTyHtMyPi15tByKxPrJycAkX root@localhost.localdomain
再次推送代码无需输入密码
git clone git@gitlab.precious.com:python-web/cmdb.git cd cmdb touch README.md git add README.md git commit -m "add README" git push -u origin master
Gitlab 备份与恢复
1.修改默认存放备份站点目录,然后进行重新加载配置文件。
[root@localhost ~]# gitlab-rake gitlab:backup:create [root@localhost ~]# ls /data/gitlab/backup 1607585880_2020_12_10_13.0.6_gitlab_backup.tar
2.定时计划任务备份 crontal -e 每天凌晨2点进行备份
[root@localhost ~]# crontab -e no crontab for root - using an empty one crontab: installing new crontab [root@localhost ~]# [root@localhost ~]# crontab -l 00 02 * * * gitlab-rake gitlab:backup:create &>/dev/null
3.删除GItlab项目,然后进行恢复
删除项目cmdb
![](https://img2020.cnblogs.com/blog/2174174/202103/2174174-20210303111330019-1698335035.png)
如何恢复?
1)停止数据写入服务 [root@localhost ~]# gitlab-ctl stop unicorn [root@localhost ~]# gitlab-ctl stop sidekiq ok: down: sidekiq: 0s, normally up 2)通过gitlab-reke 命令进行恢复,恢复时需要指定此前备份的名称。(但不需要写名称的.tar后缀) [root@localhost ~]# ls /data/gitlab/backup 1607585880_2020_12_10_13.0.6_gitlab_backup.tar [root@localhost ~]# [root@localhost ~]# gitlab-rake gitlab:backup:restore BACKUP=1607585880_2020_12_10_13.0.6 需要输入yes 3)为了保险起见,重启gitlab,检测是恢复。 [root@localhost ~]# gitlab-ctl restart 4) 可以查看日志 [root@localhost ~]# gitlab-ctl tail 5)启动数据写入服务 [root@localhost ~]# gitlab-ctl start unicorn [root@localhost ~]# gitlab-ctl start sidekiq ok: run: sidekiq: (pid 44399) 304s
恢复后的效果