代码管理工具—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 = Administratoremail = 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 file01test1 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
代码管理工具—GitLab相关推荐
- 代码管理工具 Git
之前一直使用微软的代码管理工具TFS(Team Foundation Server)..NET CORE 2.0的发布后,考虑到.NET CORE项目可以跨平台,准备把项目迁移到.NET CORE 环 ...
- 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!
简介:代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性.代码质量.权限 ...
- java接口自动化(四) - 企业级代码管理工具Git的应用
1.简介 首先我们自己需要将自己的代码上传到GitHub上边做好备份.用来避免万一由于某些不可控的非人为因素或者人为因素造成的代码丢失.而且GitHub是一个开源的代码管理工具.所以宏哥这里再次介绍一 ...
- 代码管理平台gitlab
一.gitlab介绍 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. gitlab官网:https://about.gitlab.com ...
- 代码管理工具:Git
代码管理工具:Git 前言 版本控制 存储差异 完整性 三种状态 安装Git Windows安装 Linux安装 初始设定 Git仓库 文件状态 移动文件 历史提交记录 撤销操作 远程仓库拉取/推送 ...
- 还在自建代码仓库?阿里云 云效 的这款企业级代码管理工具免费、还香!
代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性.代码质量.权限管控等 ...
- Java自动化测试菜鸟篇七之代码管理工具
注:学习资料来源于行业前辈大牛:Davieyang.D.Y 所授,仅供个人学习,侵删. 代码管理工具 现在比较流行的代码管理工具有Github.Gitlab.腾讯工蜂等,其实对于普通用户而言,将自己的 ...
- IOS开发-关于代码管理工具之SVN
最近在做的一个项目,就用到了代码管理工具,那么就对SCN进行了一个简单的了解,即原理和一些常用命令. 那么我们为什么需要使用SVN呢,我们可以吧SVN当成是一个备份服务器,他可以帮你记住每次上传到这个 ...
- svn管理工具_主流代码管理工具深度评测
引言 作为有十几年IT行业代码的从业人员,经历过代码管理工具的变迁,从早期的微软的Source Code Control,到TFS,再到SVN,再到现在的Git.我深知代码管理工具是代码开发过程中非常 ...
最新文章
- 实施自动化测试的六个目标和意义
- Nginx之简介与安装(一)
- MySQL 5.1.40新特性及下载
- Django路由与视图
- 在WinCE 6.0系统下实现USB功能定制
- 理解图形化执行计划 -- 第3部分:分析执行计划
- Zookeeper基于Java访问-权限
- SAP CRM WebClient UI html 格式的 Text 显示逻辑
- Linux shell中的一个问题 ${}带正则匹配的表达式
- 输入流输出流是以内存为标准_构建用于测试的超大内存输入流
- 【JAVA基础篇】枚举
- 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
- sql---字段类型转换,sql获取当前时间,时间处理
- Swift常用第三方库
- C#自定义RSA加密解密及RSA签名和验证封装类
- 【MDT】iPhone XS 系列屏幕素质报告
- 计算机技术职业资格考试
- 2017年12月19-20日 阿里云 飞天/智能 云栖大会-北京峰会 会议笔记
- 淘宝店铺宝贝批量复制工具
- 关于FB撞库、群控的技术实现