介绍
- GitLab: 是一个机遇 Git 实现的在线代码仓库托管软件.
- 基于 Ruby on rails 开发.
- 集成了很多组件.
- 社区版本为开源免费版.
- 有完善的问题和追踪系统.
- 从
8.0
版开始,GitLab
持续集成(CI)完全集成到GitLab
本身,它还具有持续部署和持续交付功能,可用于构建、测试和部署你的应用程序。 - CD/CI
GitLab 组件
- Ngixn: 静态 Web 服务器.
- gitlab-shell: 用于处理 Git 命令和修改 authorized keys 列表.
- gitlab-workhorse: 轻量级的反向代理服务器.
- logrotate: 日志文件管理工具.
- postgresql: 数据库.
- redis: 缓存数据库.
- sidekiq: 用于在后台执行任务队列(一步执行).
- unicorn: GitLab Rails 是应用在托管在这个服务器上面.
目录介绍
/var/opt/gitlab/git-data/repositories/ # 默认存储目录. /opt/gitlab/ # 应用代码和相应的依赖程序. /var/opt/gitlab/ # gitlab-ctl reconfigure 命令编译后的应用数据和配置文件,不需要人为修改. /etc/gitlab/ # 配置文件目录. /var/log/gitlab/ # 此目录下存放了 gitlab 各个组件生产的日志. /var/opt/gitlab/backups/ # 备份文件生成的目录.
安装gitlab
官网安装介绍: https://about.gitlab.com/install/#centos-8
清华大学镜站: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/
官网源站: https://packages.gitlab.com/gitlab/gitlab-ce
安装
dnf install policycoreutils-python-utils [root@node1 ~]# rpm -ivh gitlab-ce-13.2.1-ce.0.el8.x86_64.rpm
配置
配置访问的URl [root@node1 ~]# vim /etc/gitlab/gitlab.rb external_url 'http://172.16.0.61' 配置 gitlab sudo gitlab-ctl reconfigure
查看各组件状态
[root@node1 ~]# gitlab-ctl status run: alertmanager: (pid 34082) 93s; run: log: (pid 33702) 290s run: gitaly: (pid 34052) 98s; run: log: (pid 33179) 491s run: gitlab-exporter: (pid 34040) 99s; run: log: (pid 33625) 326s run: gitlab-workhorse: (pid 34027) 99s; run: log: (pid 33518) 370s run: grafana: (pid 34097) 92s; run: log: (pid 33954) 132s run: logrotate: (pid 33557) 354s; run: log: (pid 33567) 350s run: nginx: (pid 33539) 365s; run: log: (pid 33547) 362s run: node-exporter: (pid 34036) 99s; run: log: (pid 33606) 337s run: postgres-exporter: (pid 34089) 92s; run: log: (pid 33731) 276s run: postgresql: (pid 33315) 476s; run: log: (pid 33330) 472s run: prometheus: (pid 34061) 98s; run: log: (pid 33672) 301s run: puma: (pid 33461) 389s; run: log: (pid 33468) 388s run: redis: (pid 33141) 498s; run: log: (pid 33152) 495s run: redis-exporter: (pid 34045) 98s; run: log: (pid 33650) 312s run: sidekiq: (pid 33479) 383s; run: log: (pid 33489) 382s
初始化密码
访问:http:gitlab_ip
登录
汉化
旧版本汉化
1、下载汉化补丁 git clone https://gitlab.com/xhang/gitlab.git 2、查看全部分支版本 git branch ‐a 3、对比版本、生成补丁包 git diff remotes/origin/10‐2‐stable remotes/origin/10‐2‐stable‐zh > ../10.2.2‐zh.diff 4、停止服务器 gitlab‐ctl stop 5、打补丁 patch ‐d /opt/gitlab/embedded/service/gitlab‐rails ‐p1 < /tmp/10.2.2‐zh.diff 6、启动和重新配置 gitlab‐ctl start gitlab‐ctl reconfigure
新版本汉化
gitlab-13.2.1 已经支持中文版了
修改路径: 用户 - 配置 - 偏好配置 - 语言
gitlab常用命令
gitlab-ctl start # 启动全部服务 gitlab-ctl restart # 重启全部服务 gitlab-ctl stop # 停止全部服务 gitlab-ctl reconfigure # 重置配置文件(一般修改完主配置文件/etc/gitlab/gitlab.rb,需要执行此命令) gitlab-ctl show-config # 验证配置文件 gitlab-ctl uninstall #删除gitlab(保留数据) gitlab-ctl cleanse # 删除所有数据,从新开始 gitlab-ctl tail <service name> #查看服务的日志
gitlab管理
组,用户.项目的关系:
组中创建项目,项目中添加用户.
如果组中添加用户用户就会有这个组中所有项目的权限.
组管理
创建-创建组
用户管理
创建: 创建 - 创建用户 - edit设置密码
用户加组: 组 - 向组添加用户 - 设置用户级别 - 添加用户
用户加项目: 项目 - 角色 - 设置用户权限 - 访问到期时间 - 添加用户
设置密码
edit - 设置密码
用户登录需要再次修改密码
用户添加到组
项目管理
创建项目
添加用户
分支保护
默认 master 只有 master权限才可以合并和push
没有权限推送:
[root@node3 openstack]# git push origin master Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 427 bytes | 427.00 KiB/s, done. Total 5 (delta 1), reused 0 (delta 0) remote: GitLab: You are not allowed to push code to protected branches on this project. To 172.16.0.61:wbecloud/openstack.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@172.16.0.61:wbecloud/openstack.git'
merge操作
开发人员推送代码到指定的分支,发起merge操作, master 进行merge.
[root@node3 openstack]# git checkout -b dev Switched to a new branch 'dev' [root@node3 openstack]# git branch * dev master [root@node3 openstack]# git push -u origin dev Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 427 bytes | 427.00 KiB/s, done. Total 5 (delta 1), reused 0 (delta 0) remote: remote: To create a merge request for dev, visit: remote: http://172.16.0.61/wbecloud/openstack/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev remote: To 172.16.0.61:wbecloud/openstack.git * [new branch] dev -> dev Branch 'dev' set up to track remote branch 'dev' from 'origin'.
发起合并操作
管理员处理合并请求