一、Gitlab 简介
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。
二、Gitlab的安装
- 安装相关依赖:
yum -y install policycoreutils openssh-server openssh-clients postfix
- 启动ssh服务&设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
- 设置postfix开机自启,并启动,postfix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
- 开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果关闭防火墙就不需要做以上配置
- 下载gitlab包,并且安装
gitlab下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
- 下载gitlab包,并且安装
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装:
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
- 修改gitlab配置
vi /etc/gitlab/gitlab.rb
# 修改Gitlab访问地址和端口,默认为80,我们改为82
external_url 'http://192.168.18.100:82'
nginx['listen_port'] = 82
- 重载配置以及重新启动Gitlab(需要耐心等待一段时间):
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
- 把端口添加到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
开机自启动:
systemctl enable gitlab-runsvdir.service
启动成功后访问http://192.168.18.100:82,看到以下管理员root密码的页面,修改密码后,重新登录即可。
三、Gitlab创建组、创建用户、创建项目
3.1 创建组
● 使用管理员root创建组,一个组里面可以有多个项目,可以将开发添加组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。
3.2 创建用户
● 创建用户的时候,可以选择Regular(普通用户:只能访问属于他的组和项目)或Admin(可以访问所有的组和项目)类型。
● 创建完用户,立即修改密码:
这里的用户名和密码需要记住,用于后面的jenkins登录拉取代码。
3.3 将用户添加到组中
Gitlab用户在组里面有5种不同的权限。
● Guest:可以创建isssue,发表评论,不能读写版本库。
● Reporter:可以clone代码,不能提交,比如QA、PM可以赋予这个权限。
● Developer:可以clone代码、开发、提交、push,比如普通开发可以赋予这个权限。
● Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,比如核心开发可以赋予这个权限。
● Owner:可以设置项目访问权限、删除项目、迁移项目、管理组成员,比如开发组组长可以赋予这个权限。
3.4 在用户组中添加项目
● 可以用root管理员在用户组中添加项目,也可以用刚才创建的账户登录到Gitlab中添加项目(需要重设密码,略)。
四、源码上传到Gitlab仓库
4.1 新建项目
4.2 开启版本控制
-
出现如下框 选择Git
4.3 新建一个.gitignore file (Git)
-
勾掉一些不需要的
-
出现如下框
如果不知道.gitignore file (Git) 要勾选掉哪些 就直接复制如下代码到.gitignore 里就好
# Created by .ignore support plugin (hsz.mobi)
### Maven template
target/
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion
*.iml
## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:
# IntelliJ
/out/
/build/
# mpeltonen/sbt-idea plugin
.idea_modules/
### OSX template
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Windows template
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
~*
### Eclipse template
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
# Eclipse Core
.project
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
#.gitignore
.checkstyle
test-output
4.4 提交代码到本地仓库
-
项目add后 新建的类包括.gitignore会由红色变成绿色
-
项目里添加类与代码后 commit ...(到本地库)
-
如下
4.5 推送到Gitlab项目仓库中
参考:
https://blog.csdn.net/weixin_41979002/article/details/121686628