GitLab私有Git
1 GitLab简介
GitLab是整个DevOps生命周期的第一个单一应用程序。只有GitLab才能启用Concurrent DevOps,从组件链的约束中解锁组织。GitLab提供无与伦比的可见性,更高的效率和全面的治理。这使得软件生命周期加快了200%,从根本上提高了业务速度。
2 GitLab安装(无需安装)
默认安装位置:
浏览到服务器IP并登录
首次访问时,您将被重定向到密码重置屏幕。提供初始管理员帐户的密码,您将被重定向回登录屏幕。使用默认帐户的用户名root
登录。
需要设置新的密码
重置密码后,发现出现以下错误:
原因分析:是因为我配置了安装步骤的第二步,需要邮箱,按照官网修改配置,安装Postfix以发送通知电子邮件。如果要使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器
2.1 Docker 安装
2.1.1 安装镜像和创建容器
-
拉取gitlab、redis、postgresql,gitlab依赖redis和postgresql。
shell#docker pull sameersbn/redis #docker pull sameersbn/postgresql docker pull gitlab/gitlab-ce:latest
-
创建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
-
鼠标右键打开GitBash客户端
-
git bash 执行命令,生命公钥和私钥
shellssh-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
- 点击 VCS,创建本地仓库'Create Git Repository'
- 选择项目的根目录,作为 git 本地仓库的根资源库。
- 向项目的根路径下添加 .gitignore 文件忽略不许要上传的文件
-
在 git 窗口中 local changes 目录中,选择未添加到控制的文件
PS :在下面的列表中看下是否有不许要上传的文件存在,如果有请将排除(.gitignore)或删除
-
在排查好上传文件后,点击绿色 √,将下面文件添加到版本控制中
此次操作会将未添加到版本控制的文件 add 版本控制中,并 commit 到本地仓库里
-
选择文件将文件提交到本地仓库中
将下面的文件选中,并填写提交的备注(备注必须要填写)
将 Before Commit 中的 PerForm code analysis 和 Check TODO 去掉勾选,这样可以加快上传的速度
-
将项目上传到远程仓库 gitlab 中
选中项目的根目录,在 git 菜单栏中选择 Push
-
点击 Define remote 在弹出窗口中的 URL 里填写之前的项目地址
PS:保证远端仓库是一个新的仓库
- 输入账号和密码点击 Log in
点击 Push 进行提交
- 检查 Git 中是否已经上传到远端仓库地址中
远端仓库中上传后项目的内容
以上我们将自己的项目上传到了 gitlab 组中的项目中,只有本组的人员才可以看到此项目中的内容。
4.2 从Gitlab上拉取项目至本地
关闭项目后,选择导入
输入gitlab对应项目的地址
如果显示需要输出账号和密码,请求输入
修改文件后提交并推送到远程仓库
4.3 冲突解决
和git解决冲突一致。
4.4 分支合并
不同模块创建不同的分支,开发者在自己当前的分支下开发代码,等待测试通过之后,需要项目组长leader将所有分支的代码合并到master分支上即可。
gitlab默认是将代码master分支是保护的,所以需要以下设置
5 补录
GitLab 用户组中的角色权限图一览