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 安装镜像和创建容器
- 拉取gitlab、redis、postgresql,gitlab依赖redis和postgresql。
#docker pull sameersbn/redis#docker pull sameersbn/postgresqldocker pull gitlab/gitlab-ce:latest
- 创建postgresql、redis容器
#创建数据目录mkdir-p /usr/soft/postgresql#创建容器docker run --name gitlab-postgresql -itd--privileged=true \--publish5432: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 \--publish6379:6379 \--volume /usr/soft/redis/data:/var/lib/redis \ sameersbn/redis:latest
3.创建gitlab容器#创建数据目录mkdir-p /usr/soft/gitlab/datamkdir-p /usr/soft/gitlab/logs#创建容器docker run --name gitlab -d\--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \--publish10022:22 --publish10088: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
- 鼠标右键打开GitBash客户端
- git bash 执行命令,生命公钥和私钥
ssh-keygen -t rsa
执行命令完成后,在 window本地用户.ssh目录 C:\Users\用户名\ .ssh下面
生成如下名称的公钥和私钥:
3.3.4 SSH密钥配置
密钥生成后需要在 gitlab 上配置密钥本地才可以顺利访问。
设置成功后, 我们就可以使用 SSH的形式上传和下载代码了。
git clone [email protected]:group1/pinyougou_service.git
cd pinyougou_service
touch README.md
gitadd 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 用户组中的角色权限图一览
版权归原作者 lisus2007 所有, 如有侵权,请联系我们删除。