16. GitLab 使用总结

Gitlab 搭建

CentOS 平台

硬件要求

Omnibus GitLab 软件包需要大约 2.5 GB 的存储空间用于安装。

4 核 是推荐的最小核数,支持多达 500 名用户

4GB RAM 是必需的最小内存,支持多达 500 名用户

PostgreSQL 是唯一支持的数据库,捆绑在 Omnibus GitLab 软件包中。您也可以使用外部 PostgreSQL 数据库。

通过下载包安装

1
2
3
4
5
rpm -i gitlab-ce-13.11.1-ce.0.el7.x86_64.rpm
vim /etc/gitlab/gitlab.rb
# 重新生成配置
gitlab-ctl reconfigure
gitlab-ctl restart

查看版本命令
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

复杂的安装方法

1. 安装依赖包。

1
sudo yum install -y curl policycoreutils-python openssh-server

2. 设置 SSH 开机自启动并启动 SSH 服务。

1
2
sudo systemctl enable sshd
sudo systemctl start sshd

3. 安装 Postfix 来发送通知邮件。

1
sudo yum install postfix

4. 设置 Postfix 开机自启动。

1
sudo systemctl enable postfix

5. 启动 Postfix 服务。

输入命令 vim /etc/postfix/main.cf 打开 main.cf 文件并找到如下内容 inet_interfaces = localhost 将这行代码改为 inet_interfaces = all,然后按 Esc 键,然后输入 :wq 并回车以保存并关闭 main.cf 文件。输入命令 sudo systemctl start postfix 启动 Postfix 服务。

6. 添加 GitLab 软件包仓库。

1
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

7. 安装 GitLab。

1
sudo EXTERNAL_URL="GitLab 服务器的公网 IP 地址" yum install -y gitlab-ce

代表初始 root 密码 GITLAB_ROOT_PASSWORD=“” EXTERNAL_URL=“http://gitlab.example.com

8. 使用浏览器访问 GitLab 服务器的公网 IP 地址,如果能看到页面则说明环境搭建成功。

注册和登录

GitLab.com 注册
https://gitlab.com/users/sign_up

GitLab.com 登录
https://gitlab.com/users/sign_in

gitlab 修改界面为中文
Settings — Preferences — Localization

设置保护分支

为什么要设计保护分支

By default, protected branches are designed to:

  • prevent their creation, if not already created, from everybody except Masters
  • prevent pushes from everybody except Masters
  • prevent anyone from force pushing to the branch
  • prevent anyone from deleting the branch

所以 Gitlab 强制提交是被拒绝的,即使你是 master/main 权限的用户。要解除此限制,只能是将该分支移除受保护的状态。

设置-保护分支

示例

如果不满足条件且尝试推送指定分支,则会报错。

当然保护分值可以使用通配符,保护一系列的分支

Two different wildcards can potentially match the same branch. For example, -stable and production- would both match a production-stable branch. In that case, if any of these protected branches have a setting like “Allowed to push”, then production-stable will also inherit this setting.

两个不同的通配符可能匹配同一个分支。例如,-stable 和 production- 都匹配一个 production-stable 分支。在这种情况下,如果这些受保护的分支中有任何一个具有“ allowedtopush”这样的设置,那么 production-stable 也将继承这个设置。

权限管理

Gitlab 中的组和项目有三种访问权限:Private、Internal、Public

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

Gitlab 权限管理
Gitlab 用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner


  • Guest:可以创建 issue、发表评论,不能读写版本库
  • Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限
  • Developer:可以克隆代码、开发、提交、push,RD 可以赋予这个权限
  • Master:可以创建项目、添加 tag、保护分支、添加项目成员、编辑项目,核心 RD 负责人可以赋予这个权限
  • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组 leader 可以赋予这个权限

使用 ssh 连接 git 仓库

生成 ssh 密钥

1
ssh-keygen -t rsa -C "你的邮箱地址"

-t:指定要创建的密钥类型
-C:添加注释

使用 ssh-kengen 会在 ~/.ssh/ 目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是
id_rsa 第一个是私钥文件
id_rsa.pub 第二个是公钥文件

验证是否可正常访问

1
ssh -T git@xxx.xxx.xxx.xxx -vvv

记录

一些命令

重启 GitLab
sudo gitlab-ctl restart

要单独重新启动组件,您可以将其服务名称附加到 restart 命令。例如,要仅重新启动 NGINX,您应运行:
sudo gitlab-ctl restart nginx

要检查 GitLab 服务的状态,请运行:
sudo gitlab-ctl status

使用以下命令重新配置 Linux 软件包安装实例:
sudo gitlab-ctl reconfigure

查看启动报错问题
gitlab-ctl tail

还原仓库

更改地址 + 重新推送

1
2
git remote set-url origin http://192.168.18.125:8312/Fox_AIoT/rainalot-ui-vue.git
git push --all

更改主机名或端口

ssh 22
去配置文件搜索 22 改成对应 ssh 端口即可。

监听 80 改成 8000
gitlab 修改访问端口

gitlab 安装完成默认访问的是 80 端口,这个其实是 gitlab 自带 nigix 的端口

接下来修改 80 端口为 8000,修改方式为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(1) vim /etc/gitlab/gitlab.rb

external_url 可用于更改地址和端口

若改了端口,这个 nginx 配置最好也修改下
nginx['listen_port'] = 8000

(2) gitlab-ctl reconfigure

(3) vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

listen *:8000;

(4)然后重启 gitlab 服务

gitlab-ctl restart

注意:如果修改完 gitlab-http.conf 再运行 gitlab-ctl reconfigure,就会被还原,修改并不会被覆盖。

(4) 查看端口占用情况

netstat -tunlp
如下显示,则 nigix 8000 端口启动成功

tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 78769/nginx: master

gitlab 查看版本号的两种方法

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

或者在 gitlab 后台中查看,在你的部署域名中加上 help

遇到过的问题

克隆 非 22 端口不下来

将 git clone git@192.168.18.125:Fox_AIoT/rainalot-ui-vue.git

改成 git clone ssh://git@192.168.18.125:22812/Fox_AIoT/rainalot-ui-vue.git

remote: GitLab: You are not allowed to push code to protected branches on this project

分析

原因是普通用户分配的权限是 developer,代码仓库的 master 主分支是受保护的,这个权限的用户是没有权限推送代码的。

解决

方法 1. 登录 gitlab 管理员账号 ==> 选择项目成员 ==> 修改成员角色
方法 2. 修改代码仓库的 master 主分支受保护的功能,使用 GitLab 系统管理员账户登录,更改代码仓库的 master 主分支开放权限为:Developers + Maintainers 即可。

We’re sorry. GitLab is taking too much time to respond

由于 Puma 默认使用 8080 端口被别的应用占用着,所以更改一个端口就行

参考

gitlab 修改界面为中文 - 紫枫术河 - 博客园
https://www.cnblogs.com/liushuhe1990/articles/12594850.html

Protected branches | GitLab
https://docs.gitlab.com/ee/user/project/protected_branches.html#wildcard-protected-branches