一.简介
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab与GitHub的不同
- Github分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
- Gitlab 分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装.
Gitlab的优势和应用场景
- 开源免费,适合中小型公司将代码放置在该系统中
- 品差异化的版本管理,离线同步以及强大分支管理功能
- 便捷的GUI操作界面以及强大账户权限管理功能
- 集成度很高,能够集成绝大多数的开发工具
- 支持内置HA,保证在高并发下仍旧实现高可用性
GitLab主要服务构成
- Nginx静态Web服务器
- Gitlab-workhorse 轻量级的反向代理服务器
- Gitlab-shell 用于处理Git命令和修改authorized keys列表
- Logrotate 日志文件管理工具
- Postgresql数据库
- Redis 缓存服务器
GitLab的工作流程
- 创建并克隆项目
- 创建项目某Feature分支
- 编写代码并提交至该分支
- 推送改项目分支至远程Gitlab服务器
- 进行代码检查并提交Master主分支合并申请
- 项目领导审查代码并确认合并申请
二.程序部署
部署gitlab
注意: gitlab需要4g内存支持
1.配置gitlab源vim /etc/yum.repos.d/gitlab_gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
2.安装gitlab的依赖项yum install -y curl policycoreutils-python openssh-server
3.启动postfix,并设置为开机启动systemctl start postfix
systemctl enable postfix
4.设置防火墙 (如果未使用防火墙可以跳过)firewall-cmd --add-service=http --permanent
systemctl reload firewalld
5.获取gitlab的rpm包wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm
6.安装rpm包rpm -i gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm
7.执行指令配置gitlabgitlab-ctl reconfigure
8.修改配置文件gitlab.rb,将external_url变量的地址修改为gitlab所在centos的ip地址。vim /etc/gitlab/gitlab.rb
因为修改了配置文件,故需要重新加载配置内容。gitlab-ctl reconfigure
gitlab-ctl restart
9.查看gitlab版本head -1 /opt/gitlab/version-manifest.txt
汉化gitlab
1.安装gityum install -y git
2.克隆获取汉化版本库,下载最新的汉化包git clone https://gitlab.com/xhang/gitlab.git
如果是要下载老版本的汉化包,需要加上老版本的分支,比如今天已经是10.0.4,我依旧想下载10.0.2,可以运行下面的语句git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh
3.查看该汉化补丁的版本cat gitlab/VERSION
4.停止gitlab服务gitlab-ctl stop
5.切换到gitlab汉化包所在的目录(即步骤二获取的汉化版gitlab)cd /root/gitlab
6.比较汉化标签和原标签,导出 patch 用的 diff 文件到/root下git diff v10.0.2 v10.0.2-zh > ../10.0.2-zh.diff
7.回到/root目录cd /root
8.将10.0.2-zh.diff作为补丁更新到gitlab中yum install patch -y
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 10.0.2-zh.diff
9.启动gitlabgitlab-ctl start
10.重新配置gitlabgitlab-ctl reconfigure
三.设置管理员密码
管理员账号登录的用户名:root(虽然登录后管理员的用户名为Administrator,但是实际登录的用户名是root)
网页方式
浏览器访问gitlab所在的ip,输入密码后点击 “Change your password”(如果进行汉化,点击“修改密码”)。
指令方式
执行命令gitlab-rails console production
稍等一会后会出现
irb(main):001:0> user = User.where(id: 1).first // id为1的是超级管理员
irb(main):002:0>user.password = 'yourpassword' // 密码必须至少8个字符
irb(main):003:0>user.save! // 如没有问题 返回true
exit // 退出