本文共 4975 字,大约阅读时间需要 16 分钟。
GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。
它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。
团队成员可以利用内置的简单聊天程序(Wall)进行交流。
它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表。
当通过SSH访问GitLab Server时,GitLab Shell会限制执行预定义好的Git命令(git push, git pull, git annex),调用GitLab Rails API 检查权限,执行pre-receive钩子(在GitLab企业版中叫做Git钩子),执行你请求的动作 处理GitLab的post-receive动作,处理自定义的post-receive动作。
当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码。如果你是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作;如果你是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。
yum install -y curl policycoreutils-python openssh-server openssh-clients
新建/etc/yum.repos.d/gitlab-ce.repo
,内容为
[gitlab-ce]name=Gitlab CE Repositorybaseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1
yum makecacheEXTERNAL_URL="http://git.wzlinux.com" yum install -y gitlab-ce
注:EXTERNAL_URL 指定访问的域名。
如何安装其他版本,可以通过清华大学源选择对应版本: 。
gitlab-ctl reconfigure
使用 Gitlab 一键安装包安装 Gitlab 非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab 备份:
gitlab-rake gitlab:backup:create
使用以上命令会在/var/opt/gitlab/backups
目录下创建一个名称类似为1481598919_gitlab_backup.tar
的压缩包, 这个压缩包就是 Gitlab 整个的完整部分, 其中开头的:1481598919
是备份创建的日期,/etc/gitlab/gitlab.rb
配置文件须备份,/var/opt/gitlab/nginx/conf
nginx配置文件,/etc/postfix/main.cfpostfix
邮件配置备份。
Gitlab的从备份恢复也非常简单:
# 停止相关数据连接服务gitlab-ctl stop unicorngitlab-ctl stop sidekiq
# 从1481598919编号备份中恢复gitlab-rake gitlab:backup:restore BACKUP=1481598919
# 启动Gitlabsudo gitlab-ctl start
实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
Git global setup
git config --global user.name "wzlinux"git config --global user.email "admin@wzlinux.com"
Create a new repository
git clone http://git.wzlinux.com/ios/app1.gitcd app1touch README.mdgit add README.mdgit commit -m "add README"git push -u origin master
Existing folder
cd existing_foldergit initgit remote add origin http://git.wzlinux.com/ios/app1.gitgit commit -m "Initial commit"git push -u origin master
Existing Git repository
cd existing_repogit remote add origin http://git.wzlinux.com/ios/app1.gitgit push -u origin --allgit push -u origin --tags
因为我们使用 Omnibus GitLab package 进行安装,所以我们的升级相对比较简单,也建议大家使用这种方式安装,我目前的版本是10.0.4
要升级到11.2.3
,这算是大版本升级,根据官方文档的要求,我们需要先升级到10.x的最高版本。
参考文档: 。
升级过程中会对数据进行自动备份,不用担心数据安全。
# 下载对应版本的 rpm 包wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm
# 安装此过渡版本rpm -Uvh gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm
# 下载最新版本的 rpm 包wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm
# 安装最新版本rpm -Uvh gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm
#升级过程warning: gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEYPreparing... ################################# [100%]gitlab preinstall: Automatically backing up only the GitLab SQL database (excluding everything else!)Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE]doneDumping repositories ...[SKIPPED]Dumping uploads ... [SKIPPED]Dumping builds ... [SKIPPED]Dumping artifacts ... [SKIPPED]Dumping pages ... [SKIPPED]Dumping lfs objects ... [SKIPPED]Dumping container registry images ... [DISABLED]Creating backup archive: 1535946629_2018_09_03_10.8.7_gitlab_backup.tar ... doneUploading backup archive to remote storage ... skippedDeleting tmp directories ... donedoneDeleting old backups ... skippingUpdating / installing... 1:gitlab-ce-11.2.3-ce.0.el7 ############################# ( 87%)............ _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/Upgrade complete! If your GitLab server is misbehaving try running sudo gitlab-ctl restartbefore anything else.If you need to roll back to the previous version you can use the databasebackup made during the upgrade (scroll up for the filename).
转载地址:http://gdffa.baihongyu.com/