gitlab-使用方法

常用命令

  • gitla-rails 用于启动控制台进行特殊操作,比如修改管理员密码,打开数据库控制台等
# gitlab-rails dbconsole
psql (9.6.11)
Type "help" for help.

gitlabhq_production=> \db
         List of tablespaces
    Name    |    Owner    | Location 
------------+-------------+----------
 pg_default | gitlab-psql | 
 pg_global  | gitlab-psql | 
(2 rows)

tips:进入的是gitlab的管理控制台,可以使用pgsql的命令查询数据。\q 退出数据库

  • gitla-rails 用于进入pgsql
# gitlab-psql 
psql (9.6.11)
Type "help" for help.

gitlabhq_production=# \db
         List of tablespaces
    Name    |    Owner    | Location 
------------+-------------+----------
 pg_default | gitlab-psql | 
 pg_global  | gitlab-psql | 
(2 rows)

gitlabhq_production=# \q
  • gitlab-rake  数据备份和恢复
  • gitlab-ctl 客户端命令行操作
gitlab-ctl stop #停止gitlab
gitlab-ctl start #启动gitlab
gitlab-ctl restart #重启gitlab
gitlab-ctl status #查看gitlab组件运行状态
gitlab-ctl status nginx #查看组件状态
gitlab-ctl tail nginx #查看组件日志

关闭注册功能

root用户登录gitlab

image

取消注册功能

image

保存配置

image

重新登录,就没有注册用户功能了

image

创建gitlab账号

image

这是邮箱会收到一封邮件,点击set password,设置密码。使用新用户账号就可以登录gitlab了。

创建组

使用root创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面设置权限,不同的组就是公司不同的开发项目,不同的组添加不同的开发即可实现对开发的权限管理

image

组一般设为private(私用的:只允许组内成员查看)


创建项目

创建项目时,要选择group。 换个方式理解:group<==>项目名,project<==>组件名,自己领悟

image

将用户加入到组中,并分配角色

进入group里面,选择要添加的用户,并为他选择一个角色。

owner

guest

developer

maintainer

image



本地使用示例

# Git global setup
git config --global user.name collin
git config --global user.email "tianyu29792569@163.com"

# Create a new repository
git clone http://10.80.0.21/rtdm/design.git
cd design
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

# Push an existing folder
cd existing_folder
git init
git remote add origin http://10.80.0.21/rtdm/design.git
git add .
git commit -m "Initial commit"
git push -u origin master

# Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin http://10.80.0.21/rtdm/design.git
git push -u origin --all
git push -u origin --tags

数据保存方式

  • SVN与CVS

每次提交的文件都是单独保存,按照文件的提交时间区分不同的版本,保存至不同的逻辑存储区域,后期恢复的时候基于之前版本文件恢复。

  • gitlab

gitlab与SVN的数据保存方式不一样,gitlab虽然也会在内部对数据进行逻辑划分保存,但是当后期提交的数据与之前提交过的数据没有变化,gitlab直接快照之前的文件,而不是将文件重新上传一份再保存一遍,优点:节省空间,加快代码提交速度

常用git命令

工作区:代码所在的目录名称

暂存区:git add 添加,存储工作区中对代码进行修改后的文件保存的地方

本地仓库:git commit –m “注释”,提交存储再工作区和暂存区改过的文件

远程仓库:git push ,多个开发共同协作提交代码的仓库,即gitlab服务器


git config –global user.name “collin”      设置全局用户名

git config –global user.email “123@163.com”    设置全局邮箱

git config –gobal –list    列出全局配置

# global设置,存储在当前用户家目录中 .gitconfig文件中

git add index.html /dir ./*   添加指定文件,目录,当前目录下所有数据到暂存区

gti commit –m “注释”   提交到工作区

git status  查看工作区状态

git push 提交代码到远端服务器,默认是提交到master分支提交

git pull  获取代码到本地

git log 查看操作日志

vim .gitignore  定义忽略文件,定义那些文件不向gitlab服务器上传

git reset –hard HEAD^   git版本回滚,一个^表示上一个版本,两个^^表示上上版本。

git reflog     获取每次提交的tag ID,然后可以使用—hard 根据提交的tag id进行回滚,本地仓库没有提交到gitlab的也会记录tag_id,可以指定tag_id回滚到本地仓库的某个版本

git reset –hard tag_id 回滚到指定版本

git branch 查看有哪些分支

git checkout –b branch_name 切换分支,如果分支不存在,则创建

git checkout branch_name 切换分支,分支不存在,会切换失败

git config --global credential.helper store  在本地生成一个账号密码文件,这样就不用每次都输入了  cat ~/.git-credentials

git push --set-upstream origin master

git config --global push.default simple

    在中央仓库工作流程模式下,拒绝推送到上游与本地分支名字不同的分支。也就是只有本地分支名和上游分支名字一致才可以推送,就算是推送到不是拉取数据的远程仓库,只要名字相同也是可以的。在GIT 2.0中,simple将会是push.default的默认值。simple只会推送本地当前分支。

gitlab的备份和恢复

备份

  • 停止gitlab服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

  • 手工备份gitlab数据

gitlab-rake gitlab:backup:create     #默认备份路径 /var/opt/gitlab/backups/

  • 启动gitlab服务

gitlab-ctl start unicorn

gitlab-ctl start sidekiq


自动备份脚本:将上面5条命令罗列接口,加到cron中,就可以实现定时备份


恢复

  • 停止gitlab服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

  • 手工备份gitlab数据

gitlab-rake  gitlab:backup:restore BACKUP=1607500860_2020_12_09_11.11.8    #注意这里不是文件全名

  • 启动gitlab服务

gitlab-ctl start unicorn

gitlab-ctl start sidekiq

gitlab汉化

  • web页面设置语言选项

image

选择 settings—>preferences—>localization—>languages 选择简体中文,然后点击save changes,刷新页面。

image

  • 汉化包汉化

https://gitlab.com/xhang/gitlab

image

找到对应的版本,下载汉化包

image

汉化步骤

  • 停止gitlab服务    gitlab-ctl stop
  • 备份源文件    cp -rp /opt/gitlab/embedded/service/gitlab-rails /home/gitlab-rails.bak20201209
  • 替换文件  alias cp=’cp’;cp -rf /usr/local/src/gitlab-v11.11.8-zh/* /opt/gitlab/embedded/service/gitlab-rails/
  • 刷新配置  gitlab-ctl reconfigure
  • 启动gitlab服务  gitlab-ctl start

v11.11.8汉化效果

image

  • 通过源码汉化

汉化包下载地址https://gitlab.com/xhang/gitlab

# gitlab ctl stop
# git clone https://gitlab.com/xhang/gitlab.git
# head 1 /opt/gitlab/version manifest.txt 查看当前 gitlab 版本
# cd gitlab
# git diff v11.9.8 v11.9.8 zh
# git diff v12.3.5 v12.3.5 zh
# git diff v11.9.8 v11.9.8 zh > /root/v11.9.8 zh.diff
# gitlab ctl stop
# patch f d /op t/gitlab/embedded/service/gitlab rails p1 < /root/v11.9.8 zh.diff
# gitlab ctl reconfigure
# gitlab ctl start


常见的部署方式

  • 蓝绿部署

指的 是不停老版本 代码 不 影响 上一个 版本 访问 而是 在另外一套环境 部署新 版本然后进行测试,测试 通过 后 将 用户 流量切到新版本, 其特点为业务 无 中断,升级风 险相对较小。

具体过程:

1 、 当前 版本 业务正常访问 V1
2 、 在另外 一套环境部署新代码 V2 )),代码可能是增加了功能或者是修复了某些 bug
3 、 测试 通过之后将 用户 请求 流量切 到 新版本环境
4 、 观察 一段时间 ,如 有 异常 直接 切换 旧 版本
5 、 下次 升级, 将 旧版本升级到新版本 V3


蓝绿部署适用的场景:

1 、不停止老版本,额外部署 一套新版本,等测试发现新版本 OK 后,删除老版本。
2 、蓝绿发布是一种用于升级与更新的发布策略,部署的最小维度是容器,而发布的最小维度是应用。
3 、蓝绿发布对于增量升级有比较好的支持,但是对于涉及数据表结构变更等等不可逆转的升级,并不完全合适用蓝绿发布来实现,需要结合一些业务的逻辑以及数据迁移与回滚的策略才可以完全满足需求。

在这里插入图片描述

  • 金丝雀发布

金丝雀发布也叫灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式,灰度发布是增量发布的一种类型, 灰度发布是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”(小白鼠),测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现、调整问题。

“金丝雀”的由来:17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。
当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

金丝雀发布,灰度发布步骤:

1、准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
2、从负载均衡列表中移除掉“金丝雀”服务器。
3、升级“金丝雀”应用(排掉原有流量并进行部署)。
4、对应用进行自动化测试。
5、将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)。
6、如果“金丝雀”在线使用测试成功,升级剩余的其他服务器。(否则就回滚)
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

灰度发布/金丝雀部署使用的场景

1、不停止老版本,额外搞一套新版本,不同版本应用共存。
2、灰度发布中,常常按照用户设置路由权重,例如90%的用户维持使用老版本,10%的用户尝鲜新版本。
3、经常与A/B测试一起使用,用于测试选择多种方案。

在这里插入图片描述

A/B测试

A/B测试也是同时运行两个APP环境,但是蓝绿部署完全是两码事,A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等,蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚,即蓝绿部署是一套正式环境环境在线,而A/B测试是两套正式环境在线




posted @ 2020-12-08 07:53  snailshadow  阅读(947)  评论(0编辑  收藏  举报