CentOS 7/8安装并配置GitLab 13记录
  gpcBo7k6GxFf 2023年11月02日 48 0


概述

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:

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


设置Group的可见性等级:

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


三个等级介绍:

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

新建工程project

CentOS 7/8安装并配置GitLab 13记录_root用户_03


在新建Project之前,最好先创建Group,否则默认会创建中root用户下面:

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


最后得到的是:

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


​git clone​​​的地址还是:​​http://192.111.11.111:8090/root/test.git​

新增用户

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

邀请用户

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

以组别Group维度来邀请用户:

CentOS 7/8安装并配置GitLab 13记录_root用户_06


以工程项目维度来邀请用户:

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


有四种role permission:

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

  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分支。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  4koL3J55wyKx   2023年11月13日   34   0   0 icogitCentOS
  9E2BTpjt8nym   2023年12月06日   34   0   0 WindowsgitCentOS
gpcBo7k6GxFf