目录
一、Gitlab介绍
1、什么是Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。
二、搭建gitlab并实现ssl
1、配置yum源或下载gitlab包
方法1:创建一个新的yum源文件,文件内容如下
vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab-CE
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
#此变量$releasever表示本服务器的当前系统版本号
gpgcheck=0
enabled=1
方法2:或者直接wget下载gitlab的rpm安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm
2、安装依赖软件及获取GPG密钥
hostnamectl set-hostname gitlab.lhj.com
#修改主机名
bash
#刷新shell
echo 192.168.30.20 gitlab.lhj.com >>/etc/hosts
#将本机对应域名添加到本机hosts文件中
yum install -y curl policycoreutils openssh-server openssh-clients postfix
#安装gitlab依赖软件
curl:用于上传或者下载,可以进行数据传输
openssh-server:ssh协议远程登录服务端
openssh-clients:ssh协议远程登录客户端
postfix:邮件传输协议,用于发送邮件
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#获取GPG密钥,保证下载的gitlab包是由gitlab官方发布的不是被篡改的软件包
GPG密钥:GPG密钥可以保证软件下载的完整性和安全性。通过使用该公钥,你可以验证下载的软件包是否来自GitLab官方,从而确保GitLab安装的安全。
systemctl enable postfix --now
#开机自启postfix并现在立即启动
3、安装gitlab-ce
方法1:上面配置过gitlab的yum源了直接yum安装即可
yum install gitlab-ce -y
方法2:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
#curl -s:静默模式常用于脚本下载。-S若出错不止是输出错误代码,要输出错误详细信息。下载gitlab官网的rpm.sh脚本传给bash执行。不用手动编辑配置yum源
yum install gitlab-ce -y
#然后再yum安装gitlab
4、创建私有密钥
mkdir -p /etc/gitlab/ssl
#创建存放密钥的目录
openssl genrsa -out "/etc/gitlab/ssl/gitlab.lhj.com.key" 2048
#利用openssl创建密钥-out指定密钥输入位置
Generating RSA private key, 2048 bit long modulus
........................................................................................+++
............+++
e is 65537 (0x10001)
#创建成功输出内容
cd /etc/gitlab/ssl
ls
gitlab.lhj.com.key
#进入存放密钥的目录查看有创建的私钥
5、创建私有证书
openssl req -new -key "/etc/gitlab/ssl/gitlab.lhj.com.key" -out "/etc/gitlab/ssl/gitlab.lhj.com.csr"
#创建私有证书签名
req表示使用openssl工具生成证书签名请求。
-new:表示创建一个新的证书签名请求。
-key:表示指定使用的私钥文件
-out:表示将csr文件保存到此路径下
#填写生成证书的信息,如下:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN #国家,CN表示中国
State or Province Name (full name) []:JS #省份江苏
Locality Name (eg, city) [Default City]:NJ #城市南京
Organization Name (eg, company) [Default Company Ltd]:test #组织单位test
Organizational Unit Name (eg, section) []:test #单位名称test
Common Name (eg, your name or your server's hostname) []:gitlab.lhj.com #主机名称
Email Address []:[email protected] #邮箱地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #设置证书密码123456
An optional company name []:test #公司名称test
6、创建CRT签名证书
openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.lhj.com.csr" -signkey "/etc/gitlab/ssl/gitlab.lhj.com.key" -out "/etc/gitlab/ssl/gitlab.lhj.com.crt"
#利用生成的私钥和私有证书签名CRT证书
-days:证书有效期为365天
-in:指定私有证书
-signkey指定私钥,生成的签名证书为gitlab.lhj.com.crt
cd /etc/gitlab/ssl/
ls
#现在应该有以下三个文件
gitlab.lhj.com.crt gitlab.lhj.com.csr gitlab.lhj.com.key
7、利用openssl签署pem 证书
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
#dhparam:表示使用 OpenSSL 工具生成 DH 参数。
#-out /etc/gitlab/ssl/dhparams.pem:表示将生成的 DH 参数保存在指定的文件 /etc/gitlab/ssl/dhparams.pem 中。
cd /etc/gitlab/ssl/
chmod 600 *
ll
#修改ssl下所有证书权限为600
8、配置证书到gitlab
[root@gitlab ssl]# vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.lhj.com'
#改为https协议和自己服务器的域名
nginx['redirect_http_to_https'] = true
#取消#号更改注释并为true,将http重定向到https
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.lhj.com.crt"
#更改crt证书路径
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.lhj.com.key"
#更改路径私钥路径
# nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"
#更改pem证书路径 后面的注释不用管# Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
9、初始化gitlab
gitlab-ctl reconfigure
#初始化gitlab,过程时间较长耐心等待gitlab-ctl用于管理gitlab
10、nginx配置重写到https
cd /var/opt/gitlab/nginx/conf
ls
gitlab-health.conf gitlab-http.conf nginx.conf nginx-status.conf
vim gitlab-http.conf
#在server listen *:80;下一行添加
server_name gitlab.lhj.com;
#有servername就不写
rewrite ^(.*)$ https://$host$1 permanent;
#重写所有都到https,permanent永久重定向
gitlab-ctl restart
#重启gitlab
11、windows配置hosts
在Windows系统里C:\Windows\System32\drivers\etc\hosts 添加以下内容
192.168.30.20 gitlab.lhj.com
#配置完毕后在cmd的窗口中ping gitlab.lhj.com 查看是否能ping通
12、windows访问测试
13、 登录并修改root初始密码
cat /etc/gitlab/initial_root_password
#查看gitlab初始密码
14、更改语言为中文(可选)
16、 关闭账户自动注册
15、管理员创建账户和组
16、管理员创建项目
17、配置登录免密认证
Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目(如Jenkins)的运用这一步是必须的。
首先,在想要进行验证的设备上执行命令:
ssh-keygen
#四个回车生成免密登录秘钥
18、项目成员权限分配
19、gitlab项目介绍
①项目权限
权限名称 | 权限类型 | 权限说明 |
私有 | Private | 只有属于该项目成员才有权限查看和操作项目 |
内部 | Internal | 具有GitLab账号的人员登陆后都可以克隆项目 |
公开 | Public | 任何人都可以克隆 |
②分支角色管理
角色名称 | 角色类型 | 角色说明 |
匿名用户 | Guest | 访客【只能创建问题和留言评论】 |
报告人 | Reporter | 可以理解为测试员、产品经理等,一般负责提交问题等 |
开发人员 | Developer | 负责项目开发 |
管理者 | Master | 一般是组长,负责对Master分支进行维护 |
所有者 | Owner | 一般是项目经理【拥有所有权限】 |
20、gitlab常用命令
命令 | 说明 |
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本。 |
git rm | 删除工作区文件。 |
git mv | 移动或重命名工作区文件。 |