Gitlab搭建

Gitlab搭建

一.gitlab安装

设置gitlab的yum源(使用清华镜像源安装GitLab)

gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。

shell 复制代码
在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:
 
cd /etc/yum.repos.d/
vim gitlab-ce.repo
 
[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
 
yum clean all && yum makecache

安装Gitlab

shell 复制代码
# 直接安装最新版
yum install -y gitlab-ce 

出现下面的图标,安装成功

# 如果要安装指定的版本,在后面填上版本号即可
yum install -y  gitlab-ce-×××
# 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证
yum install gitlab-ce -y --nogpgcheck

关闭防火墙,开机自关闭

shell 复制代码
systemctl stop firewalld
 
systemctl disable firewalld
 
setenforce 0

安装完gitlab需要修改配置文件,并加载

shell 复制代码
vim /etc/gitlab/gitlab.rb     进入配置文件

找到下面一行,修改ip

修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效即可启动Gitlab。注意,启动过程较长,需要耐心等待。

查看Gitlab的状态,执行命令

shell 复制代码
gitlab-ctl status

二.gitlab安装目录

gitlab组件日志路径:/var/log/gitlab

gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件

应用代码和组件依赖程序:/opt/gitlab

各个组件存储路径: /var/opt/gitlab/

仓库默认存储路径   /var/opt/gitlab/git-data/repositories

版本文件备份路径:/var/opt/gitlab/backups/

nginx安装路径:/var/opt/gitlab/nginx/

redis安装路径:/var/opt/gitlab/redis

三.gitlab常用命令汇总

#查看服务状态
gitlab-ctl status
使用控制台实时查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志
gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#启动关闭gitlab	
gitlab-ctl start      
gitlab-ctl stop                                #停止            
gitlab-ctl status                              #查看状态
gitlab-ctl restart                             #重启
gitlab-ctl reconfigure			   #更新配置文件
gitlab-ctl help                                #帮助
gitlab-rake gitlab:check SANITIZE=true --trace	检查gitlab
#gitlab 默认的日志文件存放在/var/log/gitlab 目录下
gitlab-ctl tail                                #查看所有日志
#禁止 Gitlab 开机自启动
systemctl disable gitlab-runsvdir.service 
#启用 Gitlab 开机自启动
systemctl enable gitlab-runsvdir.service

四.gitlab访问测试

1.登录gitlab

打开浏览器输入gitlab服务器地址,注册用户,如下图

注册用户


完成后想登录http://192.168.40.185:9091 需要账号和密码登录,注册一个后登录报错误,需要管理员账号初始化

2.配置默认访问密码

 切换到命令运行的目录 cd /opt/gitlab/bin/
 执行如下命令:gitlab-rails console -e production  进行初始化密码

在irb(main):001:0> 后面通过 u=User.where(id:1).first 来查找与切换账号(User.all 可以查看所有用户)
gitlab-rails console -e production
u=User.where(id:1).first
u.password='because5210.0'
u.password_confirmation='because5210.0'
u.save!
exit

出现true说明设置成功!
此时就可以用root/because5210.0来登录页面


成功登录root账户

设置中文

3.登陆自己创建的账户

root账号登陆




再次登录,登陆成功

五.gitlab图形化操作

1.gitlab关闭自动注册

在企业生产环境中,我们一般由项目负责人负责创建用户并分配权限,一般禁止员工私自注册用户,以防给项目开发工作带来安全性上的风险。为了避免员工自动注册,我们一般会禁止Gitlab的自动注册功能。在Gitlab的主菜单上,选择Menu------Admin,如下所示:

点击下方保存配置,在页面上就无法自动注册了。

2.gitlab免密登录

Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目**(如Jenkins)的运用这一步是必须的**。

首先,在想要进行验证的设备上执行命令:

shell 复制代码
ssh-keygen
[root@localhost ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9s9C6howGF17soK592sDESNOydaJf88Ee/csxOpkoro root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| . + ..          |
|  B.=...         |
| +.o.ooo..       |
|  .=o o+o +      |
|  + +o.=S+ o     |
|   ..+..*.o o    |
|  . .o.= o..     |
|   ...o.o .o     |
|  Eo .+=.  .o    |
+----[SHA256]-----+
[root@localhost ~]# 

完成上述配置后,可以生成本设备的公私钥对,执行命令:

可以查看本设备的公钥,如下所示:

[root@localhost ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeW8qTs//BIuY8Fb9MM1qxFDFpzUygfOxhgDS9ngv92AXBVEufIeoOWnV3IFO2BHD8GYdMzi5USyQyVNA6fQ3KxCgoHMk5d9Tb4ZGdtBqNkJQ8aJdNEfC9mAtYnlJXeF9+DYdcRhRD+i6RoDkG12+fHcwImgBOnnz0MgWus+IT4rE8p6CL4oabdZ+R4Oh9fHWxJ7QKUrid9C65WC0YpW0QP5ewr63eNTJRHqRv/Vh+B1cvNZqk1p/x73K8UMvEK8ff5QBC6eujmBZckRANmMSAGnkJMHQSFFTfh1uFK5spGD7E0Etc7+cyogKhWrI7O5P/XfGEraPb+QBxuFnUVRxN root@localhost.localdomain

我们将该公钥复制下来,之后,我们打开Gitlab,点击右上角的用户图标,在弹出的选择框中选择Edit Profile,然后点击左边的SSH Keys,如下所示:

添加密钥添加完成后的页面如下:

3.gitlab创建项目

Gitlab上创建项目。由于新项目的创建必须依赖于一个组,因此,我们在创建项目前,先创建组。

进入Gitlab主页面后,点击Overview中的Groups选项,然后点击右边的New group,选择新创建一个组,如下所示:

输入组的名称和描述,组的URL会随着组名称的输入而自动出现,在组的权限处,我们选择Private,配置完成后如下所示

接下来,我们点击最下方的Create Group,就可以完成组的创建了,如下所示:

接下来,我们来创建项目。项目的创建与组的创建过程类似,都是输入项目名称,选择组的名称,项目描述以及权限等,配置好的项目如下所示:

配置完成后,就可以创建项目了。

创建项目后,Gitlab会自动创建一个README.md的文件,我们可以在线对该文件机型编辑,如下所示:

4.使用管理员创建账户

前提:使用root管理员账号密码登陆GitLab

初始密码由管理员设置,

当用户第一次登录时,由用户进行修改密码


5.gitlab 添加邮箱设置

5.1开启SMTP功能

登陆邮箱==》设置==》账户==》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务==》开启SMTP服务==》接收验证

shell 复制代码
修改gitlab配置
Vim /etc/gitlab/gitlab.rb



shell 复制代码
 #更新配置文件
gitlab-ctl reconfigure
gitlab-ctl restart

5.2验证

Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
Notify.test_email('1657xxxx@qq.com', 'GitLab email', 'Hellow world').deliver_now
执行 gitlab-rails console进入控制台交互界面, 然后在控制台提示符后输入下面内容发送一封测试邮件,测试完成后exit()退出。


6.修改登录欢迎页面

看下图操作即可

设置完的效果图

六.gitlab命令行操作

第一次使用该项目地址的话,需要创建新版本库,首先从主项目上fork一个自己的项目。从自己项目上获取clone(克隆)链接地址。在想要存放的目录下执行

shell 复制代码
git clone http://192.168.40.185:9091/test/git_test.git


查看日志

1.命令行新建分支

shell 复制代码
查看当前所在的分支
git branch 查看分支
shell 复制代码
git branch deve 创建分支,deve为新的分支名,可改
git checkout deve  进入到刚刚创建的分支
切换分支

查看状态(跟源文件有出入的文件)

shell 复制代码
git status
git push -u origin deve 		提交到新分支中

添加新分支成功

shell 复制代码
切换到主分支
git checkout main

2.上传代码仓库

首次使用Git的话,需要设置全局的用户名和邮箱设置,如下图所示:

在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "admin@example.com"

# 查看配置
git config --list
git init			初始化git
git remote add origin http://192.168.40.185:9091/test/git_test.git	将本地git和服务器上的连接
git add 1.txt		添加要提交的本地项目	(.代表所有 可用文件名代替. 上传某个文件)
git commit -m "测试代码"		提交到本地仓库
git push -u origin main 	将项目推送到gitlab端


出现报错:
fatal: 远程 origin 已经存在 
解决:
#删除远程配置 git remote rm origin 
#重新添加 git remote add origin http://192.168.58.10:9091/test/git_test.git

这样就可以了,刷新gitlab页面就可以看到上传的项目了。

3.git命令行常用指令的使用

git status 	#上次提交后是否对文件再做了修改项目
git add . 		#添加所有的变动
git checkout -b 文件夹名称 		#创建本地分支并切换分支 git checkout -b pr/ffr
git commit -m "描述"			 #提交修改 git commit -m "修改什么"
git merge origin/develop "本地分支" 		#合并origin/develop上别人所做的修改到自己的本地分支 git merge origin/develop pr/ffr
git push origin "本地分支" #推送本地分支到远程,并建立联系 git push origin pr/ffr
git rebase -i 编号 #合并多次提交,将前几次的提交合并为一次
git checkout 分支名 #切换分支 git checkout pr/FFR-color git cherckout develop
git pull #更新当前分支的状态
git branch #列出本地分支
git branch -a #列出本地分支与远程分支
git branch -D 分支名 #删除分支(目前仅用于删除本地分支)
git remote -v #可以查看远程仓库信息
git branch 分支名 #仅仅创建 一个新分支,并不会自动切换到新分支中去
git rebase --abort #退出git rebase
git reset 提交编号 #git rebase -i 提交编号,之后出现错误,可以回退到之前未合并时的日志状态
git commit --amend -m "描述" #修改上一次的提交的描述
git stash #暂存上一次的修改,准备切换到其他的分支
git stash pop #还原上一次的修改,将暂存的修改加入到新的分支

3.1提交与修改

命令 说明
git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变化的文件
git diff 比较文件的不同,即暂存区和工作区的差异
git commit 提交暂存区到本地仓库
git reset 回退版本
git rm 删除工作区文件
git mv 移动或重命名工作区文件

七.gitlab数据备份

1.gitlab创建备份

1.1手动备份

创建备份文件
使用一条命令即可创建完整的Gitlab备份。
gitlab-rake gitlab:backup:create   
使用命令会在/var/opt/gitlab/backups目录下创建一个压缩包,这个压缩包就是Gitlab整个的完整部分。
生成完后,/var/opt/gitlab/backups目录
创建一个名称类似为1715127202_2024_05_08_16.11.1_gitlab_backup.tar的压缩包

其中

/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf  nginx配置文件
/etc/postfix/main.cfpostfix  邮件配置备份

2.更改gitlab备份目录

shell 复制代码
也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
修改为你想存放备份的目录即可
 
gitlab_rails['backup_path'] = "/home/gitlab-backup"
 
 
#指定备份后数据存放的路径、权限、时间配置
gitlab_rails['manage_backup_path'] = true              开启备份功能
gitlab_rails['backup_path'] = "/home/gitlab-backup"        指定备份的路径
gitlab_rails['backup_archive_permissions'] = 0644        备份文件的权限
gitlab_rails['backup_keep_time'] = 604800            备份保留时间
修改完成之后使用下面命令重载配置文件即可.
gitlab-ctl reconfigure

创建备份目录并授权
chown -R git:git /home/gitlab-backup
使用命令创建完整的Gitlab备份
这个压缩包就是gitlab的整个完整部分


3.gitlab自动备份

定时自动备份

实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务

3.1方法一 输入: crontab -e 然后添加相应的任务

#输入命令crontab -e
crontab -e  
#输入相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  
注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
 
#查看周期性计划任务
crontab -l 

3.2脚本执行gitlab 备份

shell 复制代码
#!/bin/bash
a="/home/gitlab-backup"
back="/home/git_back"
date="$(date +%Y-%m-%d)"
logfile=$back/$date.log
gitlab-rake gitlab:backup:create > /dev/null
b=`ls $a |wc -l`
if [ $b -eq 0 ];then
echo "$date.tar 备份失败" >> $logfile
elif [ $b -gt 0 ];then
echo " $date.tar 备份成功" >> $logfile
fi
mv $a/* $back/$date.tar

将脚本加入执行计划

先清空gitlab-backup下的文件进行测试

相关推荐
极小狐4 小时前
Ruby-SAML CVE-2024-45409 漏洞解决方案
gitlab·devsecops·devops·极狐gitlab·安全合规
向往风的男子20 小时前
【devops】devops-gitlab之部署与日常使用
运维·gitlab·devops
soaring012120 小时前
Gitlab实现多项目触发式自动CICD
pipeline·gitlab·triggers·access tokens
cn_newer1 天前
gitlab/极狐-离线包下载地址
gitlab·devops·极狐·离线包下载
Roc-xb2 天前
Centos7安装gitlab-ce(rpm安装方式)
centos·gitlab
慕羽★3 天前
Git常用指令整理【新手入门级】【by慕羽】
linux·git·ubuntu·gitlab·github·仓库·分布式协作
心之所想,行之将至3 天前
记录一下gitlab社区版的安装教程
linux·服务器·gitlab
极小狐3 天前
2024 年 GitLab Global DevSecOps 报告解读
gitlab·devsecops·devops·极狐gitlab·安全合规
极小狐3 天前
极狐GitLab DevSecOps 功能合集(七大安全功能)
安全·gitlab·devsecops·极狐gitlab·安全合规
iRayCheung3 天前
Gitlab pre-receive hooks适配java p3c-pmd和python pycodestyle
java·python·gitlab·pre-receive