GitLab私有Git

GitLab私有Git

1 GitLab简介

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

官方网站

gitlab优势

2 GitLab安装(无需安装)

默认安装位置:

浏览到服务器IP并登录

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

需要设置新的密码

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

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

2.1 Docker 安装

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

    shell 复制代码
    #docker pull sameersbn/redis
    #docker pull sameersbn/postgresql
    docker pull gitlab/gitlab-ce:latest
  2. 创建postgresql、redis容器

    shell 复制代码
    #创建数据目录
    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
    shell 复制代码
    #创建数据目录
    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容器

    shell 复制代码
    #创建数据目录
    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、登录容器

yacas 复制代码
docker exec -it -u root gitlab /bin/bash

2、登录GitLab的Rails控制台

yacas 复制代码
gitlab-rails console

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

3、定位到root用户

yacas 复制代码
user = User.where(id: 1).first

4、修改root密码

yacas 复制代码
# 执行下面的命令,将 xxxxx 改为自己的密码
user.password='xxxxxx'

# 修改后,保存用密码
user.save
2.1.2 配置gitlab访问地址
yacas 复制代码
#进入到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.初始化配置

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

shell 复制代码
gitlab-ctl reconfigure

2.其他命令:

shell 复制代码
# 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(规范)

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

yacas 复制代码
规范:项目名称或案例名称+班级编号+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 执行命令,生命公钥和私钥

    shell 复制代码
    ssh-keygen -t rsa

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

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

3.3.4 SSH密钥配置

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

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

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

相关推荐
int WINGsssss5 小时前
Git使用
git
用户0760530354387 小时前
Git Revert:安全移除错误提交的方式
git
Good_Starry19 小时前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
陌殇殇殇1 天前
使用GitLab CI构建持续集成案例
运维·ci/cd·云原生·容器·kubernetes·gitlab
吕玉生1 天前
基于GitLab 的持续集成环境
ci/cd·gitlab
F_D_Z1 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
等风来不如迎风去1 天前
【git】main|REBASE 2/6
git
艾伦~耶格尔1 天前
IDEA 配置 Git 详解
java·ide·git·后端·intellij-idea
云兮杜康1 天前
IDEA中用过git之后文件名颜色全变红
java·git·intellij-idea