常用命令
- 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
取消注册功能
保存配置
重新登录,就没有注册用户功能了
创建gitlab账号
这是邮箱会收到一封邮件,点击set password,设置密码。使用新用户账号就可以登录gitlab了。
创建组
使用root创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面设置权限,不同的组就是公司不同的开发项目,不同的组添加不同的开发即可实现对开发的权限管理
组一般设为private(私用的:只允许组内成员查看)
创建项目
创建项目时,要选择group。 换个方式理解:group<==>项目名,project<==>组件名,自己领悟
将用户加入到组中,并分配角色
进入group里面,选择要添加的用户,并为他选择一个角色。
owner
guest
developer
maintainer
本地使用示例
# 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页面设置语言选项
选择 settings—>preferences—>localization—>languages 选择简体中文,然后点击save changes,刷新页面。
汉化包汉化
https://gitlab.com/xhang/gitlab
找到对应的版本,下载汉化包
汉化步骤
- 停止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汉化效果
通过源码汉化
汉化包下载地址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测试是两套正式环境在线。