Gitlab的使用教程

news2024/11/24 18:47:07

Gitlab的基本介绍:

Gitlab是利用Ruby on Rails 一个开源的版本管理系统,实现一个自托管的git项目仓库,可通过web界面进行访问公开或私有的项目。

与GitHub类似,Gitlab能够浏览源代码、管理缺陷和注释、可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序Wall进行交流。

它还提供了一个代码片段收集功能可以轻松地实现代码复用,便于日后有需要的时候进行查找。

Git家族成员:

1)Git是一个版本控制系统,是一个命令,是一种工具;

2)Gitlib:是用于实现Git功能的开发库;

3)GitHub:是一个基于Git实现的在线代码托管仓库,包括一个网站界面,向互联网开放。

4)Gitlab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于GitHub一样的系统,一般用于企业、学校等内部网络搭建git私服。

Gitlab的服务构成:

1)Nginx:静态web服务器;

2)gitlab-shell:用于处理git命令和修改authorized keys列表;

3)gitlab-workhorse:轻量级的反向代理服务器;

4)logratate:日志文件管理工具;

5)postgresql:数据库;

6)redis:缓存数据库;

7)sidekiq:用于在后台执行队列任务(异步执行);

8)unicorn:An HTTP Server for  Rack applications,Gitlab Rails应用是托管在这个服务器上面的。

Gitlab工作流程:

Gitlab shell:

Gitlab shell有两个作用:为Gitlab处理git命令、修改authorized keys列表。

当通过ssh访问Gitlab Server的时候,Gitlab Shell会:

1)限制执行预定义好的Git命令:git push git pull git annex

2)调用Gitlab Rail API 检查权限;

3)执行pre-receive钩子(在Gitlab企业版中叫做Git钩子)

4)执行你请求的动作,处理Gitlab的post-receive动作

5)处理自定义的post-receive动作。

当通过https访问Gitlab Server的时候,工作流程取决于你是从Git仓库拉取pull代码还是向Git仓库推送push代码。

如果你是从Git仓库拉取pull代码,Gitlab Rails应用会全权处理用户鉴权和执行Git命令的工作。

如果你是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:

调用GitLab Rails API 检查权限
执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
执行你请求的动作
处理GitLab的post-receive动作
处理自定义的post-receive动作

GitLab Workhorse

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

Gitlab安装:

请参考《安装Gitlab-ce指定版本》的博文。

Gitlab的常用命令:

sudo gitlab-ctl start            # 启动所有gitlab组件
 
sudo gitlab-ctl stop             # 停止所有gitlab组件

sudo gitlab-ctl restart          # 重启所有组件

sudo gitlab-ctl status           # 检查服务状态

sudo gitlab-ctl reconfigure      # 重启服务;

sudo vim /etc/gitlab/gitlab.rb   # 修改默认配置文件

gitlab-rake gitlab:check SANITIZE=true --trace   # 检查gitlab

sudo gitlab-ctl tail             # 查看日志


Gitlab使用:

登录Gitlab:

1、在浏览器中输入部署服务器的IP地址(192.168.17.150),即可访问到Gitlab的界面。

修改密码的事情,可以百度相关的文章。

创建项目:

在另外一个虚拟机(Linux系统)中(192.168.17.201)创建项目:

1)安装git工具:

yum install -y git

 2)获取git版本:

git --version

3)生成密钥文件:使用ssh-keygen 生成密钥文件**.ssh/id_rsa.pub**。

 

 生成公私钥文件。

4)在Gitlab的主页中创建一个项目:

 

项目创建成功。

5)添加ssh key导入步骤3中生成的密钥文件内容:

ssh key添加完成。

项目地址:该地址在进行clone操作的时候用的到:

简单配置:

1)配置使用git仓库的人员姓名:

git config --global user.name "changchunhua"
git config --global user.email "chang_chunhua@qq.com"

git clone http://192.168.17.150/root/test.git

直接在根目录下克隆该项目。

2)然后将test.sh添加到索引中:

 

可以看到test.sh文件已经上传到gitlab test项目中。

操作详细记录:

1)登录

输入自己的账号密码,即可登录。

2) 修改密码:

修改好root密码,然后登录成功。

3) 项目管理:

根据需要新建项目、新建组合和新建用户。

新建项目: 创建的时候可以选择在自己用户下创建或者在某个群组里创建。

项目名称:

项目描述:

可见性:库类别:

私有库:只有被赋予权限的用户可见;

内部库:登录用户可以下载;

公开库:所有人可以下载;

提示通过SSH方式拉取推送项目代码必须要导入SSH key,这个稍后再介绍。

项目地址有HTTP和SSH两种方式-------可发送给开发人员下载和初始化项目

4)用户管理:

先创建一个组:

 

testgroup创建成功。

创建用户user01:

 

user01用户已经创建成功。

在testgroup组中添加用户user01:

 可见已经添加成功。

在testgroup的Members,我们可以编辑用户。

修改成员的权限

权限说明:

Guest:可以创建issue,发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

Developer:可以克隆代码,开发,提交,push,普通开发可以授予该权限

Maintainer:可以创建项目,添加tag,保护分支,添加项目成员,编辑项目,核心开发可以授予该权限

Owner:可以设置值项目访问权限,Visibility Level,删除项目,迁移项目,管理组成员,开发组组长可以授予该权限

从组中添加项目:

已经选择了testgroup这个组。

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

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

相关文章

YSL赢麻了?SMI社媒心智品牌榜Top20公布:YSL破局夺魁,国货品牌现后起之秀

全文速览 1.数说故事联合用户说从美妆、彩妆、护肤三板块全新发布《SMI社媒心智品牌榜》。 2.圣罗兰、兰蔻、欧莱雅等法国高端美妆大牌垄断美妆《SMI社媒心智品牌榜》前三甲。 3.彩妆Top20榜单中,底妆产品稳居前列,色彩美妆占据一席之地。 4.护肤TOP…

Java面试知识点(全)-分布式微服务-zookeeper面试知识点

Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现&…

现在转行想学云计算?这些知识你需要提前掌握!

现在转行想学云计算?这些知识你需要提前掌握! 近年来,云计算技术和应用正铺天盖地向我们袭来,工作、生活、娱乐、教育、金融、科技、工业、农业等各个领域都有他的身影。什么是“云”?“云”是一个庞大的可容纳海量资源…

医疗科普系统和微信小程序开箱即用

一.下载地址 http://www.gxcode.top/code 二.项目说明 运行环境:jdk8tomcat8mysql5.7IntelliJ IDEAmaven微信开发工具 这是一个ssmvue微信小程序的医疗科普小程序,分为pc端和微信小程序端, pc端包括:管理员角色和学生角色。 管…

【LeetCode】168. Excel表列名称

168. Excel表列名称(简单) 思路 显然,这是一道从 1 开始的的 26 进制转换题。 对于一般性的进制转换题目,只需要不断地对 columnNumber 进行 % 运算取得最后一位,然后对 columnNumber 进行 / 算,将已经取得…

【项目源码】基层医院信息化管理系统HIS源码

医院信息系统(HIS)经历了从手工到单机再到局域网的两个阶段,随着云计算、大数据新技术迅猛发展,基于云计算的医院信息系统将逐步取代传统局域网HIS,以适应人们对医疗卫生服务越来越高的要求。 利用云计算、大数据等现代信息技术研…

Windows下安装docker

Windows下安装docker 1.安装WSL2 我的Windows版本如下: 版本 Windows 11 专业版 版本 22H2 1.1 检查能否安装 必要条件: Windows 10 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362 或更高版本。对于 ARM64 系统&…

5个值得一试的开源大语言模型

5个值得一试的开源大语言模型 人工智能已经成为我们生活中不可或缺的一部分,而LLM(大型语言模型)处于这一变化的最前沿。 在对话式人工智能方面,大语言模型的性能最为关键。 虽然像 OpenAI 的 GPT-4 这样的商业大语言模型已经引起…

jdk13至15——文本块特性

文本块在jdk13中第一次预览,jdk14第二次预览,jdk15正式版; 终于不用在多行字符串中加一堆\n和一堆\"和一堆了; 之前需要这么麻烦: Testvoid test() {String s "testabcd\n" "aaa\n" "…

【机器学习】贝叶斯分类与概率图模型

文章目录 第五章 贝叶斯分类与概率图模型5.1、贝叶斯决策与贝叶斯分类5.1.1、贝叶斯基本原理5.1.2、朴素贝叶斯分类器(naive bayes)5.1.3、半朴素贝叶斯 5.2、有向图与无向图一般概念5.2.1、有向图5.2.2、无向图5.2.3、条件独立性5.2.4、图模型推理的概念…

海睿思分享 | 浅谈企业数据资产管理

1、什么是数据资产 与实物资产、无形资产一样,数据资产首先表现为是一种资源。也就是说,并非所有的数据资源都可以升级为数据资产。作为“资产”的数据资源,大体表现为以下两种形式:一是可以通过合理应用创造出新的价值。二是通过…

【k8s】Jenkins实现Java springboot应用CI、CD实践 【二】

一、运行Jenkins流水线流程思路: 场景1:常规java应用,使用jenkins pipeline 交付到Kubernetes集群中1、准备好java代码、Dockerfile、 deploy. yaml资源清单文件CI阶段: 1、获取代码 2、漏洞扫描 3、检测漏洞扫描结果,如果正常则…

OpenAI ChatGPT3.5-turbo实际解决问题能力评测

OpenAI ChatGPT3.5-turbo实际解决问题能力评测 ​ 程序员在coding的时候会经常遇到需要查阅资料的情况,最好的结果是直接能拿到一份好用的demo版本code,本次我们来评测:bing搜索和chatGPT3.5,解决实际问题:“html 图片…

【Proteus仿真】51单片机矩阵按键+中断+数码管显示+串口输出

【Proteus仿真】51单片机矩阵按键中断数码管显示串口输出 📌相关篇《【Proteus仿真】51单片机矩阵按键扫描外部中断使用》📍《【Proteus仿真】51单片机串口输出实验》🎈 《【Proteus仿真】51单片机定时器计数共阴数码管驱动显示》 &#x1f5…

PMP-敏捷管理知识总结

敏捷管理 敏捷管理 01敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,在敏捷开发中,项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征 。 敏捷项目管理简化了繁琐的流程和文档管理&…

考研考公太卷了,出国留学能弯道超车吗?

这届年轻人太难了! 国内高考人数越来越多,考上好大学的难度很大。2022年,高考报名人数是1193万,但考上本科的只有466万,考上双一流大学的不足50万,上双一流大学考生的比例不到5%。 高考只是卷的开始&…

软件代码设计-小优化(五)

产品需求: 按照天统计策略信收信人数和收信次数。以前策略信只有发送是没有收集的,现在要数据咋办,得收集啊。 设计方案: 因为策略信的发送是在一个单独的工程里,没有连接数据库。于是收集策略信放到了redis的list里&a…

第03章 流程控制语句

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。 程序设计中规定的三种流程结构,即: 顺序结构 程序从上到下逐行地执行,中间没有任何判断和跳转。 分支结构 根据条件&#xff0…

软件测试理论----测试设计方法论

1、测试用例格式 (1)用例编号:用例的唯一标识,要求具有易识别性和易维护性,能能够根据用例编号识别用例的目的和作用,一般格式为:A-B-C-D 其中 A:一般表示产品或者项目名称B&#…

Linux的启动流程

文章目录 Linux的启动流程BIOS、boot loader与kernel加载BIOSboot loader加载内核检测硬件与 initramfs 的功能 Linux的启动流程 本文章参考: [Uncertainty!!]的Linux的启动流程 Linux的启动流程是一个非常复杂的过程,下面是对Linux启动流程的详细分析&a…