GitLab私有Git

GitLab私有Git

1 GitLab简介

GitLab是整个DevOps生命周期的第一个单一应用程序。只有GitLab才能启用Concurrent DevOps,从组件链的约束中解锁组织。GitLab提供无与伦比的可见性,更高的效率和全面的治理。这使得软件生命周期加快了200%,从根本上提高了业务速度。

官方网站

在这里插入图片描述

gitlab优势

2 GitLab安装(无需安装)

默认安装位置:

在这里插入图片描述

  1. 浏览到服务器IP并登录

    首次访问时,您将被重定向到密码重置屏幕。提供初始管理员帐户的密码,您将被重定向回登录屏幕。使用默认帐户的用户名root登录

    在这里插入图片描述

    需要设置新的密码

    重置密码后,发现出现以下错误:

    在这里插入图片描述

    原因分析:是因为我配置了安装步骤的第二步,需要邮箱,按照官网修改配置,安装Postfix以发送通知电子邮件。如果要使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器

2.1 Docker 安装

2.1.1 安装镜像和创建容器
  1. 拉取gitlab、redis、postgresql,gitlab依赖redis和postgresql。

    #docker pull sameersbn/redis
    #docker pull sameersbn/postgresql
    docker pull gitlab/gitlab-ce:latest
    
  2. 创建postgresql、redis容器

    #创建数据目录
    mkdir -p /usr/soft/postgresql#创建容器
    docker run --name gitlab-postgresql -itd --privileged=true \--publish 5432:5432 \--env 'DB_USER=gitlab' \--env 'DB_PASS=gitlab' \--env 'DB_NAME=gitlabhq_production' \--env 'DB_EXTENSION=pg_trgm' \--volume /usr/soft/postgresql:/var/lib/postgresql \sameersbn/postgresql:latest
    
    #创建数据目录
    mkdir -p /usr/soft/redis/data#创建容器
    docker run --name gitlab-redis -d  --privileged=true  \--publish 6379:6379 \--volume /usr/soft/redis/data:/var/lib/redis \sameersbn/redis:latest
    

    3.创建gitlab容器

    #创建数据目录
    mkdir -p /usr/soft/gitlab/data
    mkdir -p /usr/soft/gitlab/logs#创建容器
    docker run --name gitlab -d \--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \--publish 10022:22 --publish 10088:80 \--env 'GITLAB_PORT=8899' --env 'GITLAB_SSH_PORT=10022' \--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \--env 'GITLAB_HOST=192.168.94.130' \--env 'SMTP_AUTHENTICATION=login' \--volume /usr/soft/gitlab/data:/home/git/data \--volume /usr/soft/gitlab/logs:/var/log/gitlab \gitlab/gitlab-ce:latest
    

    浏览器访问:http://[IP]:10088
    初次访问需要等待一段时间。

初始化 gitlab 中的 root 账号密码:

1、登录容器

docker exec -it -u root gitlab /bin/bash

2、登录GitLab的Rails控制台

gitlab-rails console

等待一段时间后,可以在控制台中输入命令

在这里插入图片描述

3、定位到root用户

user = User.where(id: 1).first

在这里插入图片描述

4、修改root密码

# 执行下面的命令,将 xxxxx 改为自己的密码
user.password='xxxxxx'# 修改后,保存用密码
user.save
2.1.2 配置gitlab访问地址
#进入到gitlab容器中
docker exec -it -u root gitlab /bin/bash#编辑配置文件
vim /etc/gitlab/gitlab.rb#添加配置信息
external_url 'http://自己的服务地址的名称,可以是内网穿透域名也可以是ip地址'

如果想通过内网穿透地址访问 gitlab ,需要将配置路径内容配置改为 内网穿透的域名。

如果是将GitLab部署到云服务上,需要配置公网ip地址,无需配置内网穿透。

2.1.3 gitlab 容器中的命令

下面的命令需要进入到 gitlab 容器中执行。

1.初始化配置

时间比较久…,需要耐心等待…, 不要做任何操作

gitlab-ctl reconfigure

2.其他命令:

# gitlab 服务操作 服务操作
# 初始化配置 gitlab
gitlab-ctl reconfigure
# 启动 gitlab 服务
gitlab-ctl start
# 停止 gitlab 服务
gitlab-ctl stop

3 GitLab使用介绍 【了解】

3.1 前期配置

大家注意,一般这些配置是需要公司的领导如CTO等人去配置的,初级开发人员是没有这个权限的。

3.1.0 修改显示主题为中文

主页面找到左上角菜单,选择 Edit profile,如下:

在这里插入图片描述

下面的组中选择为中文

在这里插入图片描述

在偏好设置中修改本地语言并保存

在这里插入图片描述

3.1.1 创建 group(规范)

所有班级创建的组名要遵循组名规范:

规范:项目名称或案例名称+班级编号+group+组标号下面已黑马JavaEE 133班级学成项目为例子
示例:学成在线项目组的命名第一组:xuecheng133_group1

创建组示例如下:

进入用户组

在这里插入图片描述

创建组

在这里插入图片描述

按照组的命名规范创建组名称

在这里插入图片描述

在这里插入图片描述

3.1.3 创建用户
3.1.3.1 单个创建

班级小组组长将组员信息录入到GitLab中,小组组长信息由教师先添加到GitLab中。

进入到用户管理中心

在这里插入图片描述

填写用户账号信息,并在该页面下方保存用户信息

在这里插入图片描述

创建后点击编辑修改用户的密码

在这里插入图片描述

添加用户的密码

在这里插入图片描述

3.1.3.2 将用户添加到组中

进入之前创建的组中

在这里插入图片描述

进入到选中的组管理中

在这里插入图片描述

编辑组信息

在这里插入图片描述

选中新添加用户信息,并选择为开发者角色

在这里插入图片描述

PS:不同的组角色拥有不同的权限,角色权限在本文章最后。

添加成员到组中

在这里插入图片描述

在这里插入图片描述

3.2 创建项目

组长进入到组管理界面后,点击创建组中的项目,如下:

在这里插入图片描述

创建组的空项目

在这里插入图片描述

创建后的组项目,小组要将本组中的项目上传到自己组中。

在这里插入图片描述

3.3 SSH 协议

Gitlab 可以通过 http 的方式可以上传和下载代码,这种方式可以用户的账号和密码。此方式在这里就不过多介绍了,下面将介绍使用 SSH 协议来操作 Gitlab 上的项目。

3.3.1 SSH协议概述

SSH 为 Secure Shell (安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)
所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用
SSH 协议可以有效防止远程管理过程中的信息泄露问题。

3.3.2 基于密匙的安全验证

使用 ssh 协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙,并把公
**用密匙放在需要访问的服务器上。**如果你要连接到 SSH 服务器上,客户端软件就会向服务
器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主
目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,
服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到
“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

3.3.3 SSH密钥生成

密钥生成的方式有很多种,常见的jdk的工具或者是git bash等。本教程使用GitBash

  1. 鼠标右键打开GitBash客户端

    在这里插入图片描述

  2. git bash 执行命令,生命公钥和私钥

    ssh-keygen -t rsa
    

    在这里插入图片描述

执行命令完成后,在 window本地用户.ssh目录 C:\Users\用户名\ .ssh下面

生成如下名称的公钥和私钥:

在这里插入图片描述

3.3.4 SSH密钥配置

密钥生成后需要在 gitlab 上配置密钥本地才可以顺利访问。

在这里插入图片描述

设置成功后, 我们就可以使用 SSH的形式上传和下载代码了。

在这里插入图片描述

在这里插入图片描述

git clone git@47.110.238.87:group1/pinyougou_service.git
cd pinyougou_service
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

完成提交操作。

4 Idea使用GitLab【练习】

下面的方式我们将使用 idea 中通用的操作来上传到 gitlab 中,无需其他的插件。下面方式不仅可以做到向 gitlab 中上传,也可以向 gitee 和 github 中上传。

4.1 上传项目至Gitlab

  1. 点击 VCS,创建本地仓库’Create Git Repository’

在这里插入图片描述

  1. 选择项目的根目录,作为 git 本地仓库的根资源库。

在这里插入图片描述

  1. 向项目的根路径下添加 .gitignore 文件忽略不许要上传的文件

在这里插入图片描述

  1. 在 git 窗口中 local changes 目录中,选择未添加到控制的文件

    PS :在下面的列表中看下是否有不许要上传的文件存在,如果有请将排除(.gitignore)或删除

在这里插入图片描述

  1. 在排查好上传文件后,点击绿色 √,将下面文件添加到版本控制中

    此次操作会将未添加到版本控制的文件 add 版本控制中,并 commit 到本地仓库里

在这里插入图片描述

  1. 选择文件将文件提交到本地仓库中

    将下面的文件选中,并填写提交的备注(备注必须要填写)

    将 Before Commit 中的 PerForm code analysis 和 Check TODO 去掉勾选,这样可以加快上传的速度

在这里插入图片描述

  1. 将项目上传到远程仓库 gitlab 中

    选中项目的根目录,在 git 菜单栏中选择 Push

在这里插入图片描述

  1. 点击 Define remote 在弹出窗口中的 URL 里填写之前的项目地址

    PS:保证远端仓库是一个新的仓库

在这里插入图片描述

  1. 输入账号和密码点击 Log in

在这里插入图片描述

点击 Push 进行提交

在这里插入图片描述

  1. 检查 Git 中是否已经上传到远端仓库地址中

在这里插入图片描述

远端仓库中上传后项目的内容

在这里插入图片描述

以上我们将自己的项目上传到了 gitlab 组中的项目中,只有本组的人员才可以看到此项目中的内容。

4.2 从Gitlab上拉取项目至本地

关闭项目后,选择导入

在这里插入图片描述

输入gitlab对应项目的地址

在这里插入图片描述

如果显示需要输出账号和密码,请求输入

在这里插入图片描述

修改文件后提交并推送到远程仓库

在这里插入图片描述

在这里插入图片描述

4.3 冲突解决

和git解决冲突一致。

在这里插入图片描述

4.4 分支合并

不同模块创建不同的分支,开发者在自己当前的分支下开发代码,等待测试通过之后,需要项目组长leader将所有分支的代码合并到master分支上即可。

gitlab默认是将代码master分支是保护的,所以需要以下设置

在这里插入图片描述

5 补录

GitLab 用户组中的角色权限图一览

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Flutter插件开发指南01: 通道Channel的编写与实现

Flutter插件开发指南01: 通道Channel的编写与实现 视频 https://www.bilibili.com/video/BV1ih4y1E7E3/ 前言 本文将会通过一个加法计算,来实现 Channel 的双向通讯,让大家有个一个体会。 Flutter插件 Flutter插件是Flutter应用程序与原生平台之间的桥…

转转交易猫自带客服多模板全开源完整定制版源码

源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 或 源码软件库 软件介绍 商品发布;请在后台商品添加成功后,再点击该商品管理,可重新编辑当前商品的所有信息…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

【C++精简版回顾】5.字符串

1.字符串的四种初始化方式 string str "ilove"; string str1("ilove"); string str2(str1); string str3 str1; 2.针对字符串的一些函数 &#xff08;1&#xff09;字符串长度 cout<<str.length()<<endl;&#xff08;2&#xff09;查找字…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】时间复杂度 | 空间复杂度

目录 1 -> 算法效率 1.1 -> 如何衡量一个算法的好坏&#xff1f; 1.2 -> 算法的复杂度 2 -> 时间复杂度 2.1 -> 时间复杂度的概念 2.2 -> 大O的渐进表示法 2.3 -> 常见时间复杂度计算 3 -> 空间复杂度 4 -> 常见复杂度对比 1 -> 算法效…

【regex】正则表达式

集合 [0-9.] [0-9.\-] 例子 正则表达式&#xff0c;按照规则写&#xff0c;写的时候应该不算困难&#xff0c;但是可读性差 不同语言中regex会有微小的差异 vim 需要转义&#xff0c; perl/python中不需要转义 锚位 \b am\b i am 命名 / 命名捕获组 ( 捕获组&#xff08;…

机器学习 | 实现图像加密解密与数字水印处理

目录 实现窗口可视化 数字图像加密 窗口布局设置 基于混沌Logistic的图像加密 基于三重DES的图像加密 数字图像解密 窗口布局设置 基于混沌Logistic的图像解密 基于三重DES的图像解密 基于LSB的数字水印提取 窗口布局设置 水印的嵌入与提取 实现窗口可视化 这里…

Jenkins2.426邮件通知配置

之前安装的jenkins出现问题了&#xff0c;重新装了jenkins&#xff0c;需要重新配置&#xff1a;Maven&#xff0c;JDK&#xff0c;Allure报告&#xff0c;邮件通知&#xff0c;Extended E-mail Notification等 配置Maven&#xff0c;JDK参考&#xff1a;CICD集合(四):Jenkins…

Nignx的搭建与核心配置

目录 一、Nginx是什么&#xff1f; 1、Nginx概述 2、Nginx模块与作用 3、Nginx三大作用&#xff1a;反向代理&#xff0c;负载均衡&#xff0c;动静分离 nginx七层负载均衡调度算法&#xff08;六种&#xff09; 1、轮询&#xff08;默认调度算法&#xff09; 2、加权轮…

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

基于Embedding召回和DSSM双塔模型

文章目录 基于Embedding召回介绍基于Embedding召回算法分类I2I召回U2I召回 DSSM模型DSSM双塔模型层次 基于Embedding召回介绍 基于embedding的召回是从内容文本信息和用户查询的角度出发&#xff0c;利用预训练的词向量模型或深度学习模型&#xff0c;将文本信息转换成向量进行…

Windows7安装指南

概要&#xff1a; 本篇演示Windows7的安装过程 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2可进入BIOS 2、Windows7启动U盘 Windows7启动U盘作为Windows7的安装来源 该U盘的制作可参考笔者的文章 Windows制作Windows的U盘启动盘 Windows7没有USB…

mysql 锁详解

目录 前言 一、全局锁 二、表级锁 三、行锁 前言 为什么要设计锁&#xff0c;锁设计初衷是为了解决多线程下并发问题。出现并发的时候用锁进行数据同步&#xff0c;避免因并发造成了数据错误(数据覆盖)。可见锁的重要性&#xff0c;并不是所有的数据库都有锁。比如Redis&a…

51单片机学习(3)-----独立按键控制LED的亮灭状态

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步了。 目录 一. 器件介绍及实验原理 1.独立按键 &#xff08;1&#xff09;独…

Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作

Vue图片浏览组件v-viewer&#xff0c;支持旋转、缩放、翻转等操作 之前用过viewer.js&#xff0c;算是市场上用过最全面的图片预览。v-viewer&#xff0c;是基于viewer.js的一个图片浏览的Vue组件&#xff0c;支持旋转、缩放、翻转等操作。 基本使用 安装&#xff1a;npm安装…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(一)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(一) 大家好 我是寸铁&#x1f44a; 总结了一篇刷题关于树、dfs、bfs、回溯、递归的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 105. 从前序与中序遍历序列构造二叉树 模拟分析图 代码实现 /*** Definition for a binary tre…

说一下 JVM 运行时数据区 ?

目录 一、程序计数器&#xff08;Program Counter Register&#xff09; 二、Java 虚拟机栈&#xff08;Java Virtual Machine Stacks&#xff09; 三、本地方法栈&#xff08;Native Method Stack&#xff09; 四、Java 堆&#xff08;Java Heap&#xff09; 五、方法区&…

Imagewheel私人图床搭建结合内网穿透实现无公网IP远程访问教程

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

图——最小生成树实现(Kruskal算法,prime算法)

目录 预备知识&#xff1a; 最小生成树概念&#xff1a; Kruskal算法&#xff1a; 代码实现如下&#xff1a; 测试&#xff1a; Prime算法 &#xff1a; 代码实现如下&#xff1a; 测试&#xff1a; 结语&#xff1a; 预备知识&#xff1a; 连通图&#xff1a;在无向图…

代码随想录第二十三天 回溯算法 77.组合 216.组合总和 17.电话号码的字母组合

回溯算法 LeetCode 77 组合 题目描述 思路 递归函数的返回值以及参数 在这里要定义两个全局变量&#xff0c;一个用来存放符合条件单一结果&#xff0c;一个用来存放符合条件结果的集合。 代码如下&#xff1a; vector<vector<int>> result; // 存放符合条件…