Gitlab服务部署及应用

第四阶段

时  间:2023年8月21日

参加人:全班人员

内  容:

Gitlab服务部署及应用

目录

一、Gitlab简介

二、Gitlab工作原理

三、Gitlab服务构成

四、Gitlab的优点

五、Gitlab环境部署

(一)安装部署

(二)Web操作:

(三)测试:


一、Gitlab简介

        Gitlab 是一个基于Git实现的WEB代码仓库托管软件,你可以用Gitlab自己搭建一个类似于Github一样的代码仓库,一般使用gitlab搭建私有代码仓库主要是用在公司的内部代码管理。

        Gitlab 功能是能够对代码的提交审核和问题跟踪,这个对于软件工程(代码)质量的管理是至关重要的。

        Gitlab分为社区版(CE)和企业版(EE)。大多数的公司还是会选择社区版。部署Gitlab是对服务器有配置要求的建议是CPU两核,内存4G以上。

二、Gitlab工作原理

gitlab的原理其实就是git的工作原理,GitHub也是基于git实现的

 

Remote远程仓库:

        远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可以与本地仓库同步,也可以不同步,但是它的内容是最旧的。

Repository本地仓库:

        这里面保存了被提交过的代码各个版本,比起工作区和暂存区的内容,它的内容会旧一些,git commit 后同步index的目录树到本地仓库,方便下一步通过git push同步本地仓库与远程仓库的同步。

index暂存区:

        git目录下的index文件,暂存区会记录git add 添加文件的相关信息(文件名、大小),不保存文件实体,通过id指向每个文件的实体,可以使用git status查看暂存区的状态,暂存区标记了你当前工作区中哪些内容是被git管理的。当你完成某个需求或者功能后需要提交代码,那么第一步就是通过git add 先提交到暂存区。

workspace工作区:

        程序员进行开发改动的地方,是你当前看到的,内容也是最新的。平常我们开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作。

总结:

任何对象都是在工作区中诞生和修改的;

任何修改都是从进入index区才开始被版本控制的;

只有把修改的代码提交到本地仓库,该修改才能在仓库中留下痕迹;

与协助者分享本地的修改,可以push到远程仓库来共享;

 

三、Gitlab服务构成

Nginx:静态Web服务器

gitlab-shell:用于处理Git命令和修改authorized keys列表

gitlab-workhorse:轻量级的反向代理服务器(这个是个敏捷的反向代理,它会处理一些大的HTTP请求,比如文件的上传下载,其他的请求会反向代理给Gitlab Rails应用)

logrotate:日志文件管理工具

postgresql:数据库

redis:缓存数据库

sidekiq:用于在后台执行队列的任务

unicorn:Gitlab Rails应用是托管在这个服务器上面的

四、Gitlab的优点

git是分布式的,svn不是

        git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。

GIT分支和SVN的分支不同

        分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。

git有一个强大的代码仓库管理系统 – gitlab

可以很方便的管理权限、代码review,创建、管理project

五、Gitlab环境部署

(一)安装部署

1、主机名设置

[root@localhost ~]# hostname gitlab

[root@localhost ~]# bash

 

2、安装依赖包

[root@gitlab ~]# yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python

 

3、启动postfix,并设置开机自启

[root@gitlab ~]# systemctl start postfix

[root@gitlab ~]# systemctl enable postfix

 

 

4、设置防火墙

[root@gitlab ~]# systemctl stop firewalld

[root@gitlab ~]# iptables -F

[root@gitlab ~]# setenforce 0

 

5、下载安装gitlab rpm包

清华开源镜像站:清华大学开源软件镜像站 | Tsinghua Open Source Mirror

[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm

[root@gitlab ~]# rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm

 

6、修改配置文件/etc/gitlab/gitlab.rb,生产环境下可以跟据需求修改

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

  13 external_url 'http://192.168.200.111'

 

7、重新加载配置文件

[root@gitlab ~]# gitlab-ctl reconfigure

[root@gitlab ~]# gitlab-ctl restart

[root@gitlab ~]# netstat -lnpt | grep :80

启动:gitlib-ctl start    关闭:gitlab-ctl stop

重启:gitlab-ctl restart

重载配置:gitlab-ctl reconfigure

查看状态:gitlab-ctl status

8、查看gitlab版本

[root@gitlab ~]# head -1 /opt/gitlab/version-manifest.txt

 

(二)Web操作:

1、浏览器登录 GitLab,输入 http://192.168.100.131

输入密码

 

2、密码需要八位数

 

3、登录:root,12345678

 

4、登录成功后即可进入 GitLab 首页

 

5、创建新的项目

 

6、创建名称和权限

 

7、添加readme

 

8、创建测试内容:It's gitlab test,而后点绿色键添加

 

 

(三)测试:

1、客户机测试:

[root@localhost ~]# hostname jenkins[root@localhost ~]# bash[root@jenkins ~]# git config --global user.name "jenkins"[root@jenkins ~]# git config --global user.email "jenkins@test.com"[root@jenkins ~]# git config --global color.ui true[root@jenkins ~]# git config --list[root@jenkins ~]# git clone http://192.168.200.111/root/huyang.git[root@jenkins ~]# ls huyang/[root@jenkins ~]# cat huyang/README.md 

 

增加内容测试:

 

获取:(删除之前的内容,重新克隆)

 

2、设置发邮件功能

1)修改配置文件

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

 

2)#修改gitlab配置的发信人

3)重新加载配置并重启服务

[root@gitlab ~]# gitlab-ctl reconfigure

[root@gitlab ~]# gitlab-ctl restart

 

4)测试邮件:

[root@gitlab ~]# gitlab-rails console -e production

irb(main):001:0> Notify.test_email('13363571949@163.com', 'Message Subject', 'Message Body').deliver_now

 

邮箱通知:

 

5)web设置邮箱,发送邮箱提醒!

 

邮箱通知

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的:实现KEY1/LEY2/KE3三个按键,中断触发打印一句话,并且灯的状态取反; key1 ----> LED3灯状态取反; key2 ----> LED2灯状态取反; key3 ----> LED1灯状态取反; 2.分析框图: …

Django REST framework实现api接口

drf 是Django REST framework的简称,drf 是基于django的一个api 接口实现框架,REST是接口设计的一种风格。 一、 安装drf pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install …

java.8 - java -overrideoverload 重写和重载

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不…

多种编程语言运行速度排名-10亿次除7求余数为0的数量

最佳方式是运行10次,取平均数,用时秒数显示3位小数。 因为第一次打开,可能CPU还没优化好,多次取平均,比较准确 第1次共10次,用时3秒,平均3秒 第2次共10次,用时4秒,平均3.…

代码随想录第六十天

代码随想录第六十天 Leetcode 84. 柱状图中最大的矩形 Leetcode 84. 柱状图中最大的矩形 题目链接: 柱状图中最大的矩形 自己的思路:没想到!! 正确思路:和接雨水类似,只是需要左右补0!!! 代码: class S…

4.17 如何基于 UDP 协议实现可靠传输?

目录 QUIC 是如何实现可靠传输的? Packet Header QUIC Frame Header QUIC 是如何解决 TCP 队头阻塞问题的? 什么是TCP对头阻塞问题: HTTP/2 的队头阻塞: 没有队头阻塞的 QUIC QUIC 是如何做流量控制的? QUIC 实现流量控制…

Android JNI修改ByteArray参数并返回

在JNI中修改ByteArray类型的参数并返回: 添加native方法 class TestLib {companion object{init {System.loadLibrary("jnitest")}}external fun modifyByteArray(data:ByteArray):ByteArray } var data byteArrayOf(1,2,3,4,5,6) Log.i(TAG,"in …

RK3399 开机自启一个shell脚本,一直起不来BUG

开机自启shell脚本如下: diff --git a/device/rockchip/common/sepolicy/file_contexts b/device/rockchip/common/sepolicy/file_contexts index eb6b5e4bb4..0bbe781a7c 100755 --- a/device/rockchip/common/sepolicy/file_contextsb/device/rockchip/common/se…

Vue实现Excel表格中按钮增加小数位数,减少小数位数功能,多用于处理金融数据

效果图 <template><div><el-button click"increaseDecimals">A按钮</el-button><el-button click"roundNumber">B按钮</el-button><el-table :data"tableData" border><el-table-column v-for&q…

Git gui教程---番外篇 gitignore 的文件使用

想说的 .gitignore 的文件一般大型的编译器带git的都会生成&#xff0c;他可以将你不想提交的文件在git下忽略掉&#xff0c;你应该不想将一大堆编译生成的过程文件&#xff0c;还有一些贼大的文件提交上git的。 凡是都有例外&#xff0c;一些冥顽不灵的编辑器&#xff0c;只能…

screen

可以参考博客&#xff1a;https://blog.csdn.net/nima_zhang_b/article/details/82797928 Linux中的screen是一个命令行工具&#xff0c;可以让用户在同一个终端会话中创建多个虚拟终端。它非常有用&#xff0c;因为它允许用户在后台运行长时间的进程**&#xff0c;即使用户断…

使用Pytorch和OpenCV实现视频人脸替换

“DeepFaceLab”项目已经发布了很长时间了&#xff0c;作为研究的目的&#xff0c;本文将介绍他的原理&#xff0c;并使用Pytorch和OpenCV创建一个简化版本。 本文将分成3个部分&#xff0c;第一部分从两个视频中提取人脸并构建标准人脸数据集。第二部分使用数据集与神经网络一…

(学习笔记-调度算法)内存页面置换算法

在了解内存页面置换算法前&#xff0c;我们得先了解 缺页异常&#xff08;缺页中断&#xff09;。 当 CPU 访问的页面不在物理内存中时&#xff0c;便会产生一个缺页中断&#xff0c;请求操作系统将缺页调入到物理内存。那它与一般的中断主要区别在于: 缺页中断在指令执行 [期…

共享内存 windows和linux

服务端&#xff0c;即写入端 #include <iostream> #include <string.h> #define BUF_SIZE 1024 #ifdef _WIN32 #include <windows.h> #define SHARENAME L"shareMemory" HANDLE g_MapFIle; LPVOID g_baseBuffer; #else #define SHARENAME "sh…

移动端测试工具有哪些

移动端测试工具有哪些 答案&#xff1a; 移动端测试工具有以下几种&#xff1a; Appium&#xff1a;一种开源的移动端自动化测试工具&#xff0c;支持多种移动操作系统&#xff08;如iOS和Android&#xff09;&#xff0c;可以使用多种编程语言进行脚本编写。 Robot Framewor…

剑指 Offer 61. 扑克牌中的顺子

剑指 Offer 61. 扑克牌中的顺子 排序&#xff0c;计算0的个数&#xff0c;看其他的数字是不是连续的&#xff0c;不连续的话用0补&#xff0c;如果0的个数不够补了&#xff0c;就无法构成顺子。 class Solution {public boolean isStraight(int[] nums) {Arrays.sort(nums);i…

LeetCode 面试题 02.02. 返回倒数第 k 个节点

文章目录 一、题目二、C# 题解 一、题目 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本题相对原题稍作改动 点击此处跳转题目。 示例&#xff1a; 输入&#xff1a; 1->2->3->4->5 和 k 2 输出&#xff1a; 4 说…

Git 版本控制系统

git相关代码 0、清屏幕&#xff1a;clear 1、查看版本号 git -v2、暂存、更改、提交 3、当前项目下暂存区中有哪些文件 git ls-files4、查看文件状态 git status -s5、暂时存储&#xff0c;可以临时恢复代码内容 git restore 目标文件 //&#xff08;注意&#xff1a;完全…

python人工智能和机器学习

人工智能和机器学习是当今科技领域最热门和前沿的话题之一。随着数据的爆炸式增长和计算能力的提升&#xff0c;人工智能和机器学习在各个领域都有广泛的应用。Python作为一种易学易用且功能强大的编程语言&#xff0c;已经成为人工智能和机器学习的首选工具之一。本文将介绍Py…

分布式事务-seata框架

文章目录 分布式事务0.学习目标1.分布式事务问题1.1.本地事务1.2.分布式事务1.3.演示分布式事务问题 2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾 2.2.BASE理论2.3.解决分布式事务的思路 3.初识Seata3.1.Seata的架构3.2.部署TC服务3.3.微服务集成S…