代码管理工具—GitLab

1、GitLab介绍

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

        gitlab主要用于私用,github主要用于公网,都可看成web版的git

1.1、常用的网站 

        Community Edition or Enterprise Edition,ce和ee分别指的是社区版和企业版,毫无疑问社区版已经能满足我们的需求了。

  • 官网 : https://about.gitlab.com/
  • https://packages.gitlab.com/gitlab/gitlab-ce CE版下载地址
  • https://packages.gitlab.com/gitlab/gitlab-ee EE版下载地址
  • 国内镜像 :https://mirrors.tuna.tsinghua.edu.cn/gitlab‐ce/yum/

2、安装部署

2.1、环境准备

  • gitlab_server:192.168.4.10
  • 关闭selinux和防火墙

2.2、安装依赖包

[root@gitlab_server ~]# yum -y install curl policycoreutils openssh-server postfix
[root@gitlab_server ~]# systemctl enable sshd
[root@gitlab_server ~]# systemctl start sshd
[root@gitlab_server ~]# systemctl enable postfix
[root@gitlab_server ~]# systemctl start postfix

2.3、联网安装gitlab

[root@gitlab_server ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DNS1=8.8.8.8        # 追加一行
[root@gitlab_server ~]# systemctl restart network
[root@gitlab_server ~]# vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
[root@gitlab_server ~]# yum clean all
[root@gitlab_server ~]# yum makecache 
[root@gitlab_server ~]# yum -y install gitlab-ce

 备注: 如果安装比较慢的话也可以从https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/下载rpm包到本地进行安装【yum localinstall gitlab-ce-12.9.2-ce.0.el8.x86_64.rpm】

2.4、配置

        修改为本机的名称或者IP地址, GitLab默认会占用80、8080和9090端口,如果服务器上还有tomcat、Jenkins等其他服务,可能会遇到端口冲突。

如果想修改端口的话可以:

  • external_url 'http://192.168.2.100:自定义端口'
  • unicorn['port'] = xxx prometheus
  • ['listen_address'] = 'localhost:xxx'
  • 将xxx更换成需要使用的端口 
[root@gitlab_server ~]# vim /etc/gitlab/gitlab.rb 
  32 external_url 'http://192.168.4.10'
[root@gitlab_server ~]# gitlab-ctl reconfigure

2.5、目录和命令

  • /opt/gitlab/:gitlab的程序安装目录
  • /var/opt/gitlab:gitlab数据目录
  • /var/opt/gitlab/git‐data:存放仓库数据
指           令作     用
gitlab-ctl start启动所有 gitlab 组件;
gitlab-ctl stop停止所有 gitlab 组件;
gitlab-ctl restart重启所有 gitlab 组件;
gitlab-ctl status查看服务状态;
gitlab-ctl reconfigure启动服务;
vim /etc/gitlab/gitlab.rb修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace检查gitlab;
gitlab-ctl tail查看日志;
systemctl enable gitlab-runsvdir.service设置自动启动
systemctl disable gitlab-runsvdir.service取消自动启动
systemctl start gitlab-runsvdir.service启动主服务
[root@gitlab_server ~]# gitlab-ctl start
[root@gitlab_server ~]# gitlab-ctl start nginx
[root@gitlab_server ~]# gitlab-ctl service-list     # gitlab服务的构成
alertmanager*
gitaly*                     # RPC服务,用于处理gitlab发出的git调用
gitlab-exporter*
gitlab-kas*
gitlab-workhorse*           # 轻量级的反向代理服务器
grafana*
logrotate*                  # 日志文件管理工具
nginx*                      # 静态web服务
node-exporter*
postgres-exporter*
postgresql*                 # 数据库
prometheus*
puma*
redis*                      # 缓存数据库
redis-exporter*
sidekiq*                    # 用于在后台执行队列任务,以上未标注的是与监控相关的插件
[root@gitlab_server ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION      # 查看版本

2.6、 用火狐浏览器访问服务

2.6.1、打开登录界面

  • 用管理员帐号登录,用户名root,查看初始密码
[root@gitlab_server ~]# grep "Password:" /etc/gitlab/initial_root_password 
Password: KJi7X1dqaFI43dGU4hcALj5BhEH60aWpRHDmGqDsKRo=

2.6.2、修改语言

  • 进入首页后,点击右上角,选择Preferences项 

  •  然后往下拉,找到Language,选择Chinese Simplified 简体中文

  • 修改密码在左侧栏的密码选项,初次登录必须修改密码(密码要8位,包含字母符号)

  •  修改密码后,退出重新登录,部署完成!

2.7、gitlab的使用

2.7.1、自动注册

        关于注册,有些公司是不允许打开的,有些人数非常多的公司就需要打开注册的功能,让人员自己注册,我们来给他特定的权限就可以,毕竟人非常多的时候还由我们来给她们注册就非常不现实了,工作量会很大。

2.7.2、组&用户&项目

2.7.2.1、创建组

  • 设置组名称、描述等创建群组 

 2.7.2.2、创建用户

  • 点击创建用户后,再选择编辑,设置密码

  • 把用户添加到组里面

 

  • Guest (访客)

        可操作权限:可以创建issue、发表评论。
        不可操作权限:不能读写版本库。

  • Reporter(记者):QA、PM可以赋予这个权限

        可操作权限:可以克隆代码。
        不可操作权限:不能提交。

  • Developer(开发者):RD可以赋予这个权限

        可操作权限:可以克隆代码、开发、提交、push。
        不可操作权限:不能进行读写版本库。

  • Maintainers(维护者):核心RD负责人可以赋予这个权限

        可操作权限:可创建项目、添加tag、保护分支、添加项目成员、编辑项目。
        不可操作权限:不能读写版本库。

  • Owner(所有者):(开发组leader可以赋予这个权限)

        可设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员。

访问权限:

  • Private:只有组成员才能看到
  • Internal:只要登录的用户就能看到
  • Public:所有人都能看到

  2.7.2.2、创建项目(项目就是仓库)

 

  • 可以导入项目  

 

2.7.3、登陆用户测试

  • 登陆用户测试,修改完密码后再次登录

  •  是否能看到空的gitlabtest仓库

  •   到此服务器搭建完成

2.7.2、切换到管理员用户,添加ssh‐keys

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

2.7.3、添加、推送到远程仓库

  • 默认master是不允许developer权限的成员执行推送操作的
[root@gitlab_server gitlabtest]# git remote rm origin
或
[root@gitlab_server gitlabtest]# git remote rename origin old‐origin   # 重命名
[root@gitlab_server gitlabtest]# git add origin git@192.168.4.10:gitlabtest/gitlabtest.git
[root@gitlab_server gitlabtest]# git push -u origin --all
分支 main 设置为跟踪来自 origin 的远程分支 main。
Everything up-to-date

备注:http格式clone的仓库,计算机记忆的服务器就是http,因为http老是需要输入密码可以使用ssh可以免密登录。 

2.8、另一台客户端克隆

2.8.1、环境准备

  • deveop:192.168.4.20
  • 关闭selinux和防火墙
[root@deveop ~]# yum -y install git
[root@deveop ~]# ssh-keygen -t rsa
[root@deveop ~]# cat /root/.ssh/id_rsa.pub 

2.8.2、使用test用户登录gitlab并添加ssh秘钥

  • 如果是第一次用git,则需要git config,如果不是git config可以忽略
[root@deveop ~]# git config --global user.name "Administrator"
[root@deveop ~]# git config --global user.email "admin@example.com"
[root@deveop ~]# git config --global push.default simple
[root@deveop ~]# cat .gitconfig 
[user]
	name = Administrator
	email = admin@example.com
[push]
	default = simple

2.8.2、克隆仓库

 ​​​​​​

  •  客户端克隆
[root@deveop ~]# git clone http://192.168.4.10/gitlabtest/gitlabtest.git
正克隆到 'gitlabtest'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
[root@deveop ~]# ls
anaconda-ks.cfg  gitlabtest
[root@deveop ~]# cd gitlabtest/

2.8.3、创建文件并推送

[root@deveop gitlabtest]# ls
a  b  c  file4test  README01.md  README.md
[root@deveop gitlabtest]# git config --global user.name test
[root@deveop gitlabtest]# git config --global user.email "test@aa.com"
[root@deveop gitlabtest]# git branch usertest01
[root@deveop gitlabtest]# git checkout usertest01
切换到分支 'usertest01'
[root@deveop gitlabtest]# touch file01test
[root@deveop gitlabtest]# ls
a  b  c  file01test  file4test  README01.md  README.md
[root@deveop gitlabtest]# git add .
[root@deveop gitlabtest]# git commit -m "touch file01test"
[usertest01 9555209] touch file01test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file01test
[root@deveop gitlabtest]# git push -u origin usertest01

2.8.4、合并请求

 

  • 切换到管理员账号,处理请求

 

  •   切换到test用户或者直接使用管理员查看,内容已合并,之前的usertest01分支已经被删除

 2.8.5、设置保护主分支

 

        默认情况下为了保证master分支的稳定是被保护的,只有维护者可以执行push的操作,所以,当一个开发者身份的用户在针对master分支进行操作的时候会出现被拒绝的提示 。同样我们也可以利用上述功能去保护某些不想被修改的分支。

 2.8.6、解决内容不一致

        除了分支被保护会出现上述提示之外,有些时候在你返回master端测试推送 ,由于其他分支进行推送 ,和master端内容不一致 ,所以无法进行推送 ,这个时候可以使用git pull把代码拉取到本地 ,或者git fetch 把代码拉取到本地仓库后进行合并 (注意 :git pull = git fetch+git merge )

[root@deveop gitlabtest]# git fetch
[root@deveop gitlabtest]# ls
[root@deveop gitlabtest]# git merge origin/main
[root@deveop gitlabtest]# ls
a  b  c  file01test  file4test  README01.md  README.md
[root@deveop gitlabtest]# git push -u origin

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值