当前位置:   article > 正文

【运维知识高级篇】一篇文章带你搞懂GitLab基础操作(安装部署+汉化+代码推送+分支合并+保护主分支+GitLab备份)_分支保护 gitlab

分支保护 gitlab

GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,可以通过web界面,进行访问公开的或者私人项目,它有和Github类似的功能,能够浏览源代码,管理缺陷和注释,可以观念里团队对仓库的访问,它非常已于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流,它还提供一个代码片段收集功能可以轻松实现代码复用。

  1. 官网:https://about.gitlab.com/
  2. 国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

环境准备

一、安装环境

  1. 1、Centos7.9
  2. 22G内存(测试),生产至少需要4G
  3. 3、安装包:gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm(下载连接放在文末)
  4. 4、禁用防火墙,关闭selinux

二、安装GitLab

可以官网下载,也可以选择安装rpm包(下载链接放在文末)

  1. [root@Gitlab ~]# yum -y install policycoreutils-python #安装依赖
  2. [root@Gitlab ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm #安装软件包
  3. vim /etc/gitlab/gitlab.rb # gitlab 配置文件
  4. 更改url地址为本机IP地址 external_url 'http://10.0.0.200'
  5. gitlab-ctl reconfigure # 更改配置文件后需重新配置
  6. /opt/gitlab/ # gitlab的程序安装目录
  7. /var/opt/gitlab # gitlab目录数据目录
  8. /var/opt/gitlab/git-dfata # 存放仓库数据
  9. gitlab-ctl status # 查看目前gitlab所有服务运维状态
  10. gitlab-ctl stop # 停止gitlab服务
  11. gitlab-ctl stop nginx # 单独停止某个服务
  12. gitlab-ctl tail # 查看所有服务的日志
  13. GitLab的服务构成:
  14. nginx: 静态web服务器
  15. gitlab-workhorse: 轻量级的反向代理服务器
  16. logrotate:日志文件管理工具
  17. postgresql:数据库
  18. redis:缓存数据库
  19. sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
  20. unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)

GitLab汉化

直接访问10.0.0.200,显示英文界面 

1、下载汉化补丁

  1. [root@Gitlab ~]# git clone git@gitlab.com:xhang/gitlab.git #需要先做免密钥
  2. 将Gitlab主机上的公钥复制到gitlab官网(https://gitlab.com)自己的账号配置中
  3. 用http下载方式理论上也可以,但是我这边测试下载不上

2、查看全部分支版本

[root@Gitlab gitlab]# git branch -a    #需要在安装好的gitlab目录下

3、对比版本、生成补丁包

  1. [root@Gitlab gitlab]# git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > ../10.2.2-zh.diff
  2. [root@Gitlab gitlab]# cd ..
  3. [root@Gitlab ~]# ls
  4. 10.2.2-zh.diff gitlab gitlab.bak gitlab-ce-10.2.2-ce

4、停止服务器

gitlab-ctl stop

5、打补丁

[root@Gitlab ~]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 10.2.2-zh.diff 

6、启动和重新配置 

  1. gitlab-ctl start
  2. gitlab-ctl reconfigure

再次访问显示中文界面

GitLab配置使用

首次登录需要先配置下密码,最短八位,登录用户名为root,密码是自己配置的密码

一、配置外观

配置好后登录界面会被修改

登录进去后左上角进行了更改

二、关闭自动注册

根据实际需求操作,如果是内网,取不取消无所谓,如果有公网,被人发现了随意注册就可以登录我们的gitlab了,很危险。

取消后下滑保存 

三、创建群组、用户

创建群组

创建用户 

创建好后点编辑,在此处添加用户密码 

 

四、把用户添加进组里面

五、创建仓库(项目)

六、登录koten用户测试是否能看到空的test仓库

浏览器开隐私模式,首次登录koten用户需要修改密码,也可以原密码与新密码一致

七、添加ssh-keys到GitLab

一个服务器的key,只能添加到一个gitlab服务器上,一个用户可以添加多个key

八、添加远程仓库,推送本地代码到远程仓库

  1. [root@Gitlab ~]# mkdir git_test
  2. [root@Gitlab ~]# cd git_test
  3. [root@Gitlab git_test]# git init #初始化git仓库
  4. Initialized empty Git repository in /root/git_test/.git/
  5. [root@Gitlab git_test]# git remote add origin git@10.0.0.200:koten_group/test.git #添加远程仓库
  6. [root@Gitlab git_test]# git checkout -b master #创建本地master分支
  7. Switched to a new branch 'master'
  8. [root@Gitlab git_test]# git remote rename origin koten-origin #更改origin名字
  9. [root@Gitlab git_test]# touch 1.txt
  10. [root@Gitlab git_test]# git add . #添加项目到缓存区
  11. [root@Gitlab git_test]# git commit -m "file 1.txt" #添加项目到本地仓库
  12. [master (root-commit) e364410] file 1.txt
  13. 1 file changed, 0 insertions(+), 0 deletions(-)
  14. create mode 100644 1.txt
  15. [root@Gitlab git_test]# git push -u koten-origin master #推送本地仓库至远程仓库
  16. Counting objects: 3, done.
  17. Writing objects: 100% (3/3), 199 bytes | 0 bytes/s, done.
  18. Total 3 (delta 0), reused 0 (delta 0)
  19. To git@10.0.0.200:koten_group/test.git
  20. * [new branch] master -> master
  21. Branch master set up to track remote branch master from koten-origin.

刷新可以看到远程仓库的文件 

九、克隆代码到另一台主机,并测试推送

如果不做认证会让输入gitlab的密码,我们使用key进行认证 

  1. [root@Web01 ~]# ssh-keygen
  2. [root@Web01 ~]# cat .ssh/id_rsa.pub #复制进koten用户的ssh密钥

 克隆代码

  1. [root@Web01 git_test]# git config --global user.email "you@example.com"
  2. [root@Web01 git_test]# git config --global user.name "Your Name"
  3. [root@Web01 ~]# mkdir git_test
  4. [root@Web01 ~]# cd git_test
  5. [root@Web01 git_test]# git init
  6. Initialized empty Git repository in /root/git_test/.git/
  7. [root@Web01 git_test]# git clone git@10.0.0.200:koten_group/test.git #克隆远程仓库代码
  8. Cloning into 'test'...
  9. remote: Counting objects: 3, done.
  10. remote: Total 3 (delta 0), reused 0 (delta 0)
  11. Receiving objects: 100% (3/3), done.
  12. [root@Web01 git_test]# tree
  13. .
  14. └── test
  15. └── 1.txt
  16. 1 directory, 1 file

推送代码

  1. [root@Web01 git_test]# git branch dev
  2. [root@Web01 git_test]# git checkout dev
  3. [root@Web01 git_test]# touch dev_test
  4. [root@Web01 git_test]# git add .
  5. [root@Web01 git_test]# git commit -m "add dev_test"
  6. [dev cac97e4] add dev_test
  7. 1 file changed, 0 insertions(+), 0 deletions(-)
  8. create mode 100644 dev_test
  9. [root@Web01 git_test]# git remote add origin git@10.0.0.200:koten_group/test.git #添加远程仓库
  10. [root@Web01 git_test]# git push -u origin dev #推送dev分支到远程仓库
  11. Counting objects: 5, done.
  12. Compressing objects: 100% (4/4), done.
  13. Writing objects: 100% (5/5), 464 bytes | 0 bytes/s, done.
  14. Total 5 (delta 0), reused 0 (delta 0)
  15. remote:
  16. remote: To create a merge request for dev, visit:
  17. remote: http://10.0.0.200/koten_group/test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
  18. remote:
  19. To git@10.0.0.200:koten_group/test.git
  20. * [new branch] dev -> dev
  21. Branch dev set up to track remote branch dev from origin.

十、合并分支请求

首次可以在右上角点击创建合并请求

 

 

 由于dev是给的身份是开发人员有自主接受合并请求的权限,如果我们给的身份是记者,就需要在root账号下去管理,接受请求,如果master分支被保护,我们也需要通过root进行接受请求

合并后虽然root端远程仓库可以显示合并的文件,但是在gitlab本地仓库没有,我们可以pull更新下仓库

  1. [root@Gitlab git_test]# ls
  2. 1.txt
  3. [root@Gitlab git_test]# git pull
  4. remote: Counting objects: 6, done.
  5. remote: Compressing objects: 100% (6/6), done.
  6. remote: Total 6 (delta 0), reused 0 (delta 0)
  7. Unpacking objects: 100% (6/6), done.
  8. From 10.0.0.200:koten_group/test
  9. e364410..600d0ef master -> koten-origin/master
  10. Updating e364410..600d0ef
  11. Fast-forward
  12. dev | 0
  13. dev_test | 0
  14. test | 1 +
  15. 3 files changed, 1 insertion(+)
  16. create mode 100644 dev
  17. create mode 100644 dev_test
  18. create mode 160000 test
  19. [root@Gitlab git_test]# ls
  20. 1.txt dev dev_test test

十一、设置保护主分支

我们可以给master设置为保护,这样除了root用户外,其他用户不能将代码直接推送至主分支

  1. [root@Web01 git_test]# git checkout master #切换到master分支
  2. Switched to branch 'master'
  3. [root@Web01 git_test]# git merge dev #合并dev分支
  4. Updating 53298b6..cac97e4
  5. Fast-forward
  6. dev_test | 0
  7. 1 file changed, 0 insertions(+), 0 deletions(-)
  8. create mode 100644 dev_test
  9. [root@Web01 git_test]# git push -u origin master #推送主分支
  10. To git@10.0.0.200:koten_group/test.git
  11. ! [rejected] master -> master (fetch first)
  12. error: failed to push some refs to 'git@10.0.0.200:koten_group/test.git'
  13. hint: Updates were rejected because the remote contains work that you do
  14. hint: not have locally. This is usually caused by another repository pushing
  15. hint: to the same ref. You may want to first merge the remote changes (e.g.,
  16. hint: 'git pull') before pushing again.
  17. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

十二、root端测试推送保护的分支

  1. #由于其他分支进行推送,和master端内容不一致,所以无法进行推送,使用git pull把代码拉取到本地,或者git fetch 把代码拉取到本地仓库后进行合并(注意:git pull = git tetch+git merge)
  2. [root@Gitlab git_test]# git push -u koten-origin master
  3. Branch master set up to track remote branch master from koten-origin.
  4. Everything up-to-date

GitLab备份

  1. 对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。
  2. gitlab提供了一个简单的命令行来备份整个gitlab,并且能灵活的满足需求。
  3. 备份文件将保存在配置文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。TIMESTAMP的格式为:EPOCH_YYYY_MM_DD_Gitlab-version。
  4. 如果自定义备份目录需要赋予git权限
  5. 配置文件/etc/gitlab/gitlab.rb 中加入
  6. gitlab_rails['backup_path'] = '/data/backup/gitlab'
  7. gitlab_rails['backup_keep_time'] = 604800 备份保留的时间(以秒为单位,这个是七天默认值),
  8. mkdir -p /data/backup/gitlab
  9. chown -R git.git /data/backup/gitlab
  10. 完成后执行
  11. gitlab-ctl reconfigure

gitlab rpm包下载连接:链接:https://pan.baidu.com/s/1WCXrPxDzEchFys4i7kjr8A?pwd=q80w

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/105709
推荐阅读
相关标签
  

闽ICP备14008679号