16. GitLab 使用总结
Gitlab 搭建
CentOS 平台
硬件要求
Omnibus GitLab 软件包需要大约 2.5 GB 的存储空间用于安装。
4 核 是推荐的最小核数,支持多达 500 名用户
4GB RAM 是必需的最小内存,支持多达 500 名用户
PostgreSQL 是唯一支持的数据库,捆绑在 Omnibus GitLab 软件包中。您也可以使用外部 PostgreSQL 数据库。
通过下载包安装
1 | rpm -i gitlab-ce-13.11.1-ce.0.el7.x86_64.rpm |
查看版本命令
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
复杂的安装方法
1. 安装依赖包。
1 | sudo yum install -y curl policycoreutils-python openssh-server |
2. 设置 SSH 开机自启动并启动 SSH 服务。
1 | sudo systemctl enable 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=“
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 | git remote set-url origin http://192.168.18.125:8312/Fox_AIoT/rainalot-ui-vue.git |
更改主机名或端口
ssh 22
去配置文件搜索 22 改成对应 ssh 端口即可。
监听 80 改成 8000
gitlab 修改访问端口
gitlab 安装完成默认访问的是 80 端口,这个其实是 gitlab 自带 nigix 的端口
接下来修改 80 端口为 8000,修改方式为
1 | (1) vim /etc/gitlab/gitlab.rb |
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