GitLab私有Git

时间:2024-02-23 21:32:24

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 用户组中的角色权限图一览

在这里插入图片描述

在这里插入图片描述