CentOS 7/8安装并配置GitLab 13记录

概述

GitLab,基于Ruby开发的开源Git项目管理应用,其提供的功能和Github类似。GitLab提供一个CE社区版本,用户可以将其部署在自己的内网服务器上,可用于团队内部的项目代码托管仓库。

本文记录搭建内网GitLab Server的过程和遇到的问题。

注:CentOS 7/8安装Git:yum install git

安装

首先下载rpm源安装包,一定要先确定清楚自己的CentOS是什么版本,查看版本号:
cat /etc/redhat-release

输出:CentOS Linux release 8.3.2011

如果是CentOS 7,则对应el7
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.0.0-ce.0.el7.x86_64.rpm

本文基于CentOS 8系统,打开上述URL切换到el8路径下,随机选一个版本下载,本文没有选择最新版本:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/gitlab-ce-13.0.0-ce.0.el8.x86_64.rpm

CentOS 8系统,直接安装:rpm -i

CentOS 7系统,需要指定已经下载到本地的rpm包:rpm -i gitlab-ce-13.0.0-ce.0.el7.x86_64.rpm

编辑配置文件:vim /etc/gitlab/gitlab.rb

查看模式,输入/external_url回车查找,按n继续向下找(N则向上查找),找到external_url 'http://gitlab.com'并修改为:external_url 'http://192.168.20.111:8090'

注意每次修改该配置文件后,都需要执行:

gitlab-ctl reconfigure
gitlab-ctl restart

浏览器地址栏输入上面配置的external_url,如果打不开,则关闭防火墙:systemctl stop firewalld

默认的用户名是root,根据系统指引修改密码。

至此,安装成功。

操作

实战

新建组别Group

root用户,可以添加Group:
在这里插入图片描述
设置Group的可见性等级:
在这里插入图片描述
三个等级介绍:

  1. Private,私有
  2. Internal,内部
  3. Public,公有

新建工程project

在这里插入图片描述
在新建Project之前,最好先创建Group,否则默认会创建中root用户下面:
在这里插入图片描述
最后得到的是:
在这里插入图片描述
git clone的地址还是:http://192.111.11.111:8090/root/test.git

新增用户

退出root用户,然后注册用户,如johnny,设置密码johnny233,邮箱可随便填写,可以成功登录系统。

邀请用户

Ctrl + Shift + N快捷键打开Chrome的隐身模式,新开页面,以root用户登录,进入刚才添加的group,然后可以邀请用户,并设置用户的角色和权限。

以组别Group维度来邀请用户:
在这里插入图片描述
以工程项目维度来邀请用户:
在这里插入图片描述
有四种role permission:
在这里插入图片描述

  1. Guest,
  2. Reporter
  3. Developer
  4. Maintainer,

Git clone/push

打开命令行生成SSH key,
添加ED25519 SSHkey:
ssh-keygen -t ed25519 -C “”

添加SSH key:
ssh-keygen -t rsa -b 2048 -C "user@email"
将生成的pub文件的内容配置到SSH key里面,即可push代码,

然后 git clone 项目时,使用 http 协议,输入注册的用户名/密码,

初始化本地项目推到远程服务器

进入到本地项目文件夹,右键选择Git Bash Here,初始化git init为一个Git仓库,先添加.gitignore文件,然后添加所有文件git add .,查看状态git status .,提交git commit -m "init"
在远程服务器端新建一个工程,点击Git clone得到其地址。
设置远程仓库地址:
git remote add origin http://192.111.11.111:8090/root/local-test.git
查看状态:
git remote -v
获取远程库与本地同步合并:
git pull --rebase origin master
输入U/P
git push -u origin master

.gitignore不生效

细心的开发者,在上面的git status .步骤执行时,可能会看到明明已经在项目的根目录下新增配置文件.gitignore,且有target/配置项,但是却输出:
new file target\classes\add.sql
说明.gitignore未生效,可是这个target配置项显然是没有问题的。
原因:
.gitignore只能忽略原来没有被跟踪的文件,因此跟踪过的文件是无法被忽略的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
输出:

error: the following file has staged content different from both the
file and the HEAD:
    .gitignore
(use -f to force removal)

再次执行:
git rm -r -f --cached .
然后重新添加文件git add .,并执行git status .,输出正常,即target目录下面的class文件并不会被加入暂存区。
注意在.gitignore配置文件中,target/*/target/是有区别的。

问题

johnny用户git push报错:

remote: GitLab: You are not allowed to push code to protected branches on this project.
To http://192.111.11.111:8090/root/test.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://192.111.11.111:8090/root/test.git'

因为johnny这个用户的change permission是developer,对于master分支是默认没有push权限,升级到maintainer,即可push到远程的master分支。

posted @ 2021-02-04 20:47  johnny233  阅读(31)  评论(0编辑  收藏  举报  来源