11、Git之自建项目托管平台(GitLab)

11.1、简介

Github 是国外的项目托管平台,由于网络问题,在国内访问和使用不是很方便。

Gitee 是国内的项目托管平台,虽然在访问和使用上挺方便的,但依然让人担忧项目代码可能会被泄露。

因此,从企业或机构的角度出发,是倾向于在内部自建一个项目托管平台,将绝对管理权控制在自己手中的。

GitLab 作为一个用于项目代码仓库管理的开源项目,则能很好地满足企业或机构在内部自建项目托管平台的需求。

11.2、安装

本节演示如何使用 rpm 安装包,在 CentOS 7 中离线安装 GitLab 。

11.2.1、下载安装包

gitlab 官网下载地址:https://packages.gitlab.com/gitlab/gitlab-ce

清华大学开源软件镜像站下载地址(推荐):https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

如上图所示,本文选择使用 gitlab-ce-16.10.6-ce.0.el7.x86_64.rpm 版本的安装包。

提示:EL7 是 Red Hat 7.x,CentOS 7.x 和 CloudLinux 7.x 的下载。

11.2.2、服务器准备

本文将 GitLab 安装在 CentOS 7 虚拟机上,虚拟机配置为 2 核 CPU 、4G 内存、16G 磁盘。

关于 CentOS 7 虚拟机的安装方法,请参考安装CentOS7虚拟机这篇文章。

注意:16G 磁盘是最低配置要求;我使用过 8G 磁盘的虚拟机,安装完 GitLab 后,再新建一个普通用户账号,就用完了 8G 磁盘的空间,甚至都还没有创建任何项目仓库。 关于如何扩容 CentOS 7 虚拟机的磁盘,请参考VirtualBox扩容CentOS-7虚拟机磁盘这篇文章。

11.2.3、上传安装包到服务器

如上图所示,使用 mobaxterm 之类的工具,将 rpm 安装包上传到 CentOS 服务器。

11.2.4、运行安装包

rpm -ivh 安装包名称

错误:依赖检测失败:
policycoreutils-python 被 gitlab-ce-16.10.6-ce.0.el7.x86_64 需要


注意:如果运行 GitLab 安装包时存在上述错误,则需要先安装 policycoreutils-python 依赖

11.2.5、修改external_url配置

如上图所示,external_url 配置在 /etc/gitlab/gitlab.rb 文件中。

vi /etc/gitlab/gitlab.rb

如上图所示,external_url 配置默认值为 http://gitlab.example.com

如上图所示,将 external_url 配置修改为 'http://192.168.56.120:10005

其中,192.168.56.120 是 GitLab 所在的服务器的 IP ;10005 是自定义的端口,否则 GitLab 会占用 80 端口。

11.2.6、重新加载配置文件

gitlab-ctl reconfigure

注意:重新加载配置文件的过程比较耗时,耐心等待即可,出现 gitlab Reconfigured! 即操作成功。

11.2.7、查看端口占用情况

上图为 CentOS 自身所使用的端口。

上图为重新加载 GitLab 配置文件后,端口的变化。

新加载 Gitlab 配置文件,会自动启动或重启 Gitlab ;所以不用再重复执行启动或重启命令。

11.2.8、常用命令速查表

命令 作用
gitlab-ctl start 启动 GitLab
gitlab-ctl restart 重启 GitLab
gitlab-ctl stop 停止 GitLab
gitlab-ctl reconfigure 新加载 GitLab 配置文件
gitlab-ctl status 查看 GitLab 状态
gitlab-rake gitlab:check SANITIZE=true 检查 GitLab
gitlab-ctl tail 查看 GitLab 日志

11.2.9、查看管理员初始化密码

如上图所示,在第一次成功重新加载配置文件后,会为 GitLab 的 root 管理员账号随机生成一个初始化密码;该密码会在 24 小时后自动删除。

cat /etc/gitlab/initial_root_password

11.3、Gitlab的基本使用

11.3.1、访问GitLab登录页

如上图所示,使用在 11.2.5 节配置的 external_url (http://192.168.56.120:10005)即可访问 GitLab 登录页。

注意:如果访问不了登录页,可能是服务器的防火墙问题,关掉防火墙即可;


systemctl stop firewalld

11.3.2、登录root管理员账号

如上图所示,使用生成的初始化密码,登录root管理员账号。

如上图所示,这便是 GitLab 的主页。

11.3.3、修改界面语言为中文

如上图所示,点击“Preference”。

如上图所示,将 Language 选择为简体中文,然后保存修改。

11.3.4、修改root管理员密码

如上图所示,点击“编辑个人资料”。

如上图所示,在“密码”界面中,即可修改密码。

如上图所示,修改密码后,需要重新登录。

11.3.5、停用注册功能

如上图所示,GitLab 默认开启自由注册账号功能,但是 GitLab 一般用于企业内部,因此一般都会停用注册功能,账号应由 root 管理员创建。

如上图所示,取消“已启用注册功能”,然后保存更改即可。

如上图所示,停用注册功能后,登陆页面的“立即注册”入口消失了。

如上图所示,如果想恢复启用注册功能,在“管理中心”->“设置”->“通用”中,可以找到“注册限制”的配置项恢复配置。

11.3.6、创建新账号

如上图所示,在“管理中心”->“概览”->“用户”中,可以找到创建新用户的按钮。

如上图所示,设置新用户的名称、用户名和电子邮件。

如上图所示,设置新用户的权限为“管理员”。

如上图所示,新建用户成功后,会自动跳转到该用户的资料页,可以点击“编辑”按钮,为该用户重置密码。

如上图所示,为该用户设置密码后,点击“保存更改”即可。

11.3.7、创建远程仓库

如上图所示,点击“创建项目”。

如上图所示,选择“创建空白项目”。

如上图所示,设置仓库名称、仓库归属用户、仓库可见级别,然后点击“新建项目”按钮,即可创建一个远程库仓库。

如上图所示,仓库新建成功,可以获取到这个仓库的 HTTP 和 SSH 地址。

11.3.8、配置SSH密钥

如上图所示,点击“编辑个人资料”->“SSH密钥”,进入配置SSH密钥的界面;然后点击“添加新密钥”按钮。

如上图所示,将在本地生成的 SSH 公钥复制到 GitLab,然后点击“添加密钥”即可完成SSH密钥的配置。

提示:关于本地生成和查看的 SSH 公钥方式,请参考7.10.2 和 7.10.3 小节。

如上图所示,已成功在 GitLab 中添加了一个本地电脑生成的公钥。

这样一来,以后在本地电脑,使用远程仓库的 SSH 地址执行 push (推送)命令的时候,就不需要登录了。

11.3.9、生成访问令牌

如上图所示,点击“编辑个人资料”->“访问令牌”,进入配置访问令牌的界面;然后点击“添加新令牌”按钮。

如上图所示,在添加访问令牌的配置界面中,设置该访问令牌的名称(任意名称,本例为for_idea),设置该令牌的过期时间,还有设置该令牌的权限(本例选中api,即全权限);然后点击“创建个人访问令牌”即可生成一个访问令牌。

如上图所示,访问令牌已成功生成。

注意:该访问令牌相当于 GitLab 的账号密码,所以不能向陌生人透露。
此外,该访问令牌要尽快复制保存,否则刷新页面后就消失;如果没能及时保存,也可以删除重新生成一个。

11.4、IDEA集成GitLab

11.4.1、安装GitLab插件

如上图所示,在“File”->“Settings”->“Version Control”中可以看到,IDEA 默认没有和 GitLab 的相关的功能,因此需要额外安装 GitLab 插件。

如上图所示,在“Plugins”->“Marketplace”中,搜索“GitLab”,即可找到 GitLab 插件来安装。

如上图所示,安装完成插件后,需要重启 IDEA 才能使用该插件。

如上图所示,GitLab 插件安装成功后,可以在“Version Control”中找到和 GitLab 的相关的功能。

11.4.2、配置GitLab服务器

如上图所示,在“Version Control”->“GitLab”中,点击“Add New GitLab Server”按钮,在弹窗中,配置 GitLab 服务器的地址。

注意:这里使用到了 11.3.9 节生成的访问令牌。

11.4.3、分享项目到GitLab

11.4.3.1、打开分享弹窗

如上图所示,点击“VCS”->“Import into Version Control”->“Share Project on GitLab”,即可打开分享项目到 GitLab 的弹窗。

11.4.3.2、设置远程库属性

如上图所示,在弹窗中设置远程库的名称(本例为 gitlab_gittest)、远程库的分组(本例为 lb-liaojy )、远程库的连接类型(本例为 SSH)以及远程库的可见级别(本例为 Public )。

11.4.3.3、分享操作效果

如上图所示,确认进行 SSH 连接。

如上图所示,在弹窗中点击“share”按钮(相当于创建远程库然后push操作)后,项目成功地被分享到 GitLab 。

如上图所示,在 GitLab 中可以看到远程库已存在。

关于如何使用 IDEA 推送更新到远程库、拉取更新到本地库以及克隆远程库到本地,请参考10.4.4、10.4.5 和 10.4.6 节,本文不再赘述。

热门相关:九重神格   腹黑老公溺宠:老婆不准躲   我的极品美女总裁   满级绿茶穿到八十年代重新做人   帝王娇宠:小萌妃,乖一点