前言
- 目前公共的代码仓库有很多,比如:
git、gitee等
等仓库- 但是我们在公司中,还是要搭建属于本公司自己的一个代码仓库,原因有如下几点
- 代码私密性,我们公司开发的代码保密性肯定一级重要,那么我们放到公网上,放到别人的仓库里,保密性得不到保证
- 权限管理,虽然这些开源的代码仓库上也有权限管理,但是人数一旦多起来,就需要收费了
- 开源的仓库我们平时自己学习测试用一用即可。
GitLab
在中国叫极狐:GitLab-10万企业使用的一站式DevOps平台_GitLab中文官网,下面我们分别演示如下两种搭建方式
- 在
ssh
中搭建- 使用
Docker
镜像安装,如果没有学习过Docker
的,那么可以查看Docker-初级安装及使用-CSDN博客,以及Docker-高级使用-CSDN博客,依次学习- 下面,我们在
VMware
虚拟机中演示- 注意:部署我们
GitLab
的服务器,在部署时EXTERNAL_URL
的值尽量使用固定IP,或固定域名绑定
,因为页面进行跳转的时候,会获取EXTERNAL_URL+/xxx/xxx
进行跳转,如果IP改了,EXTERNAL_URL
没改,那么会有很多跳转操作失败
一、在ssh
中搭建与卸载
1、安装
前置要求
GitLab
启动包含多个程序,比如nginx、postgresql、redis等
程序,所以启动起来比较占用内存,要求运行内存必须>4G,使用free -h
命令可以查看系统可用内存,否则会启动不成功
系统内核至少在
3.10
以上,使用uname -r
命令可以查看系统内核版本
一下命令皆在
root
权限中执行服务器上
80
端口不能被占用
1.1、安装依赖
# 更新yum源
yum update -y
# 安装基础环境 基本自带,如果提示已经安装,则不需要管
yum install -y curl policycoreutils-python openssh-server perl
# 启动并打开开机自启 sshd
systemctl enable sshd
systemctl start sshd
# 开放防火墙端口
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
1.2、配置镜像
- 过程时间可能比较长,请耐心等待(大概3-5分钟)…
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
1.3、开始安装
- 除非你在安装过程中制定了自定义密码,否则将随机生成一个密码并存出在
etc/gitlab/initial_root_password
文件中(出于安全原因,24小时候,此文件会被第一次gitlab-ctl reconfigure
自动删除)- 因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。使用此密码和用户名
root
登录- 安装过程,可能出现硬盘内存不够(可使用
df -h
来查看内存信息),然后给虚拟机硬盘扩容即可- 注意:安装过程可能较长,请耐心等待(确实挺久的,刷会抖音吧)
# 我这里安装的是jh的版本,你们可以安装 gitlab-ce 版本,注意下面命令也都要改成gitlab-ce
EXTERNAL_URL="http://你的虚拟机IP或域名" yum install -y gitlab-jh
# 我执行的命令:EXTERNAL_URL="http://192.168.71.111" yum install -y gitlab-jh
直到看到如下界面,代表下载完成
1.4、GitLab常用命令
- 启动所有
gitlab
组件:gitlab-ctl start
- 停止所有
gitlab
组件:gitlab-ctl stop
- 重启所有
gitlab
组件:gitlab-ctl restart
- 查看服务状态:
gitlab-ctl status
- 启动服务(修改完下面文件后,先执行这个命令):
gitlab-ctl reconfigure
- 修改默认的配置文件:
vi /etc/gitlab/gitlab.rb
- 查看日志:
gitlab-ctl tail
1.5、启动GitLab
我们要先使用
gitlab-ctl reconfigure
重新加载配置,再使用上面的命令gitlab-ctl start
启动服务
注意:
首次启动后,完成后,我们访问
http://虚拟机iP:80
,然后会打开一个页面,上面会写,首次打开后完全启动会有几分钟的启动时间,上面写一个502
,不要慌。等待即可,页面会自动刷新
如果很久了,还没刷出来,那么我们使用
gitlab-ctl tail
命令,查看日志,是否有error
字样等信息当我们出现报错:
badgateway: failed to receive response: dial unix /var/opt/gitlab/gitlab-rails/sockets/gitlab.socket: connect: connection refused
时,可以检查宿主机ip:8080
查看是否可以打开东西,如果可以则关闭掉,否则我们的gitlab
页面会一直显示502
当页面刷新出来内容后,会需要我们进行登录,账号默认为
root
,密码则可以使用cat /etc/gitlab/initial_root_password
命令,在打印内容中查看当我们登录进去后,要先修改
root
用户密码,否则这个随机密码会在24小时候被删掉
2、卸载
- 停止GitLab服务
- 卸载GitLab包
- 清理相关文件和目录
- 检查剩余文件并删除
使用
SSH
安装会比较难卸载,我下面的步骤可能也会有遗漏没删除的目录,所以建议使用第二章的使用Docker
安装,容器有单独的文件系统,要删除GitLab
,只需删除容器即可。
# 停止GitLab
gitlab-ctl stop
# 卸载软件包
yum remove gitlab-jh
# 删除配置和数据文件
rm -rf /etc/gitlab
rm -rf /var/opt/gitlab
rm -rf /var/log/gitlab
# 移除 GitLab 仓库
rm /etc/yum.repos.d/gitlab-jh.repo
# 查看GitLab进程
ps aux | grep gitlab
# 删掉第一个进程
kill -9 第一个进程ID
# 自动清理不再需要的依赖包和系统资源
yum autoremove
二、在Docker
中搭建
- 我个人非常建议在
Docker
中安装,因为方便安装与管理,以及一键删除- 官网安装教程:极狐GitLab Docker 镜像 | 极狐GitLab
- 如果使用
Docker
安装的话,内存一定要>6G
,因为Docker
也会占用内存空间- 我这里就不演示配置
Docker
镜像源什么操作了,有需要可以查看Docker-初级安装及使用
1、命令
- 我这里直接执行
run
命令,如果本地没有镜像,则会自动安装命令中指定的镜像以及版本号拉取- 命令解析如下
-d
:后台运行-h
:指定容器内的主机名-p
:指定端口映射,可以指定多个--name
:指定容器名称--restart always
:跟随Docker
一起启动,无论容器因何原因停止,Docker 都会自动重启它--volume
:指定容器数据卷映射,可以指定多个
/var/opt/gitlab
:用于存储应用程序数据。/var/log/gitlab
:用于存储日志。/etc/gitlab
:用于存储极狐GitLab 配置文件。--shm-size
:为容器设置共享内存大小为 256MB。- 镜像名:版本号
# 定义环境变量,后面可以使用$GITLAB_HOME来取值
export GITLAB_HOME=/srv/gitlab
docker run -d \
-h gitlab-container \
-p 443:443 -p 80:80 -p 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest
# 如下是我的命令,我这里没用环境变量 上面-p 443:443是邮件端口我这里没用到,所以去掉了
docker run -d \
-h gitlab.example.com \
-p 80:80 -p 2222:22 \
--name gitlab \
--restart always \
--volume /mydir/gitlab/config:/etc/gitlab \
--volume /mydir/gitlab/logs:/var/log/gitlab \
--volume /mydir/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest
2、配置
- 上面配置完成后,虽然容器可以正常启动了,但是我们
gitlab
上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab
服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb
文件- 这个文件在容器内的
/etc/gitlab
中,但是我上面启动命令挂载到本地的/mydir/gitlab/config
中,所以我们修改本地的文件即可
vim /mydir/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80,这里是指定容器内gitlab的,我们上面启动命令监听的就是80,所以这里用80就行
external_url 'http://宿主机IP'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '宿主机IP'
gitlab_rails['gitlab_shell_ssh_port'] = 22 # 上面监听的是容器内的22端口
#保存配置文件并退出
:wq
3、访问页面
我们在自己电脑浏览器访问
http://宿主机IP:7777
即可打开页面。如果打开以后显示
502
不要慌,GitLab
第一次加载会进行初始化初始账号为
root
,密码在cat /mydir/gitlab/config/initial_root_password
中(注意,前提条件是你运行命令中配置的容器卷目录/etc/gitlab
是映射到本地的/mydir/gitlab/config
中的)
如果没有找到这个文件,或者在页面输入密码后不对,那么执行如下操作
# 进入容器中 docker exec -it gitlab bash
进入控制台 输入命令后 命令左侧为空白不显示当前所在目录不要慌,正常
gitlab-rails console -e production
查询id为1的用户,id为1的用户是超级管理员
命令如果输入完以后没有反应,那么等待一会,直到出现响应,再执行后面命令
user = User.where(id:1).first
修改密码为test123456
user.password=‘test123456’
保存
user.save!
退出
exit

- 最后在页面输入账号:
root
,密码你修改的密码
即可
三、GitLab使用
- 上面,我们使用两种方式皆进入页面了,下面我们主要讲解部分重要的页面操作
1、其他项
1.1、设置中文显示
- 我们登录进页面后,会显示英文页面,我们可以在设置中设置为中文
1.1.1、Edit profile
1.1.2、Preferences
1.1.3、Localization->Language
右侧鼠标滚轮滚到下面查找
1.1.4、Save changes
1.1.5、F5刷新页面即可
2、用户
- 如果你是首次使用随机生成的密码登录,那么你首先要做的就是修改当前登录用户密码,不然随机密码文件会在
24
小时被删掉,请看2.1
小节- 如果公司的
GitLab
是放在内网中的(一般都是),那么可以不关闭注册功能,如果是放外网上的,那么要关闭这个功能请看2.2
小节
2.1、修改当前登录用户密码
2.1.1、密码
2.1.2、输入新密码
- 注意查看表单校验
- 输入完成后点击 保存密码
- 点击完成后,会自动重新退出登录,并且跳到登录页面重新登录
2.1.3、完成
2.2、禁用注册功能
2.2.1、点击管理员
2.2.2、左侧找到设置->通用
2.2.3、右侧找到注册限制
2.2.4、关闭注册功能
2.3、创建新用户
- 要注册新用户,首先要登录
管理员(root)
账户
2.3.1、点击管理员
2.3.2、点击左侧菜单栏的概览->用户
2.3.3、右侧点击新用户
2.3.4、填写表单内容
2.3.5、编辑设置新用户密码
2.3.6、先打开另一个浏览器访问GitLab
2.3.7、输入新密码
点击
Update password
后,会再次跳转登录页面,重新登录
2.3.8、登录进来后,依旧先修改中文
请查看第三章节的
1.1
小节(设置中文显示)
3、代码
3.1、创建群组
创建仓库的前提要先创建群组
群组就像是一个目录,一般一个公司会涉及到多个项目,然而多个项目可能会使用微服务,涉及到多个服务代码,那么就可以根据项目去分组
菜单栏点击左侧
群组
导航,然后新建群组
然后在打开的页面再点击创建群组
然后在表单中输入群组信息
然后再跳转的页面中点击创建项目,或左上角
+
点击创建项目
3.2、页面创建仓库
3.2.1、点击左上角+号,创建仓库
3.2.2、创建空白项目
3.2.3、输入表单内容,创建项目
3.2.4、选择对应选项卡,查看对应操作命令
我这里已经本地创建了一个
SpringBoot
项目了,目的要把这个项目提交上去然后我们先选择对应选项卡,执行对应操作的命令
注意:根据下面命令执行可能会报错,具体命令请查看
3.3.4
3.2.5、执行操作步骤
上面命令执行可能会报错,如果报错,请按照下面第
4
步命令重新执行进入要提交项目目录
右键,
Git Bash Here
,打开Git
命令操作窗口
依次执行下面命令
# 生成.git文件 git init # 指定远程仓库地址,这条命令要复制页面上对应那一条,对应到你的仓库地址URL git remote add origin http://192.168.71.111/da-mi/dami-user.git # 将未跟踪的文件添加到跟踪内 git add . # 将跟踪的文件添加到本地暂存区,并且添加提交描述 git commit -m "init" # 将暂存区的提交,同步到远程仓库的master分支上 git push -u origin master
最后,我们打开页面,刷新当前页面,即可查看到提交的代码
3.3、赋予用户项目权限
- 第
2.3
小节我们创建了新用户,第3.2
小节我们上传了我们的项目代码- 那么我们就要给新用户来赋予新项目的代码权限了,使其可以
pull/push
操作- 权限分为群组成员、项目成员
- 群组成员:代表用户可以查看这个组
da-mi
中所有项目- 项目成员:代表用户只能查看这个项目
DaMi-User
3.3.1、打开另一个浏览器登录新用户账号
3.3.2、打开原来浏览器root
账户,点击左下角管理员
3.3.3、左侧概览->项目
3.3.4、点击右侧项目名称
3.3.5、右侧会有两栏
- 我们这里赋予项目权限,只针对这一个项目
- 点击项目成员右侧的管理权限
3.3.6、然后点击邀请成员
- 我下面这两个用户拥有
da-mi
组的权限,所以也拥有组内所有项目的权限