Gitlab安装

远程仓库
Gitlab一个基于GIT的源码托管解决方案
基于Ruby on rails开发
继承了nginx postgreSQL redis sidekiq等组件

工作流程
Gitlab安装
Gitlab安装
注:生成环境中gitlab必须要做时间同步

配置yum源
vim /etc/yum.repos.d/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

安装GitLab社区版
yum -y install gitlab-ce #自动安装最新版
yum -y install gitlab-ce-x.x.x #安装指定版本

实验安装
[[email protected] adminset]# yum install gitlab-ce-8.9.10

修改配置文件
[[email protected] adminset]# vim /etc/gitlab/gitlab.rb
external_url ‘http://192.168.56.7
注:生产环境中应该配置对外的域名
修改完成后必须执行(自动化配置)
[[email protected] adminset]# gitlab-ctl reconfigure

完成后浏览器访问
192.168.56.7
Gitlab安装
常用该命令
gitlab-ctl status 查看组件状态
[[email protected] adminset]# gitlab-ctl status
run: gitlab-workhorse: (pid 7653) 880s; run: log: (pid 7431) 982s
run: logrotate: (pid 7450) 975s; run: log: (pid 7449) 975s
run: nginx: (pid 7986) 647s; run: log: (pid 7437) 981s
run: postgresql: (pid 7306) 1021s; run: log: (pid 7305) 1021s
run: redis: (pid 7223) 1027s; run: log: (pid 7222) 1027s
run: sidekiq: (pid 7421) 988s; run: log: (pid 7420) 988s
run: unicorn: (pid 7862) 720s; run: log: (pid 7388) 994s

gitlab-ctl start
gitlab-ctl stop
gitlab-ctl restart
gitlab-ctl tail nginx 查看组件日志

Gitlab组件
nginx 静态web服务器
gitlab-shell 用于处理git命令和修改authorized keys列表
gitlab-workhorse 轻量级的反向代理服务器
logrotate 日志文件管理工具
postgresql 数据库
redis 缓存数据库
sidekiq 用于在后台执行队列任务(异步执行)
unicorn Gitlab Rails 应用是托管在这个服务器上面

目录
/var/opt/gitlab/git-data/repositories/root 库默认存储目录
/opt/gitlab/ 应用代码和相应的依赖程序
/var/opt/gitlab/ 编译后的应用数据和配置文件,不需要人为修改
/etc/gitlab 配置文件目录
/var/log/gitlab/ gitlab各个组件日志
/var/opt/gitlab/backups/ 备份文件生成的目录

修改主配置文件后需要一下操作
gitlab-ctl reconfigure
gitlab-ctl show-config
gitlab-ctl restart

Gitlab权限管理
进入管理区
Gitlab安装
第一步创意一个group
Gitlab安装
Gitlab安装
三个安全级别
1 private所有授权的账号 才能访问项目
2 internal 所有能够登录gitlab的账号 能访问项目
3 public 所有能够打开gitlab 能访问项目
一般都是 1级别

创建用户
Gitlab安装
把用户加入到组中并分配角色
Gitlab安装
给账号设置登录密码
Gitlab安装

创建项目
Gitlab安装

创建完项目后 配置权限 ssh连接
创建完Gitlab账号后交给开发,开发自己登陆创建**对
Gitlab安装
Gitlab安装
Linux系统操作方法
创建公钥
ssh-******
[[email protected] adminset]# cat /root/.ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA21IuoNz4iJxfAQKEv2qrJlzmx3xftYKLZhy6g2T0ZbSEMe9nM2hYSGrqpSZP8egKTJYbqHoR+2WTXj7l38/z4ISXBN1ZgWI3snoUIksyPNvKmP7d9FMl1UcoM3PtYXH1FTrW9D/6EutC0DmYw7PoUnk+0UIBtD5M9MlSHY+OlksmhIizDRnM3v9+CtkrN5cW3wll2o85CXgdRxR6kdcFPgQBI1pR+FDkWPVKKGyJx8zFezg44GXfbVs3V1T4FowwoatLBTE9sqJzRdh5k0ADVZB9GHDfLD8oRCl1+BE0ckESAZpwgc5dItk8N483bIgXBqTZ7JweCJ8wTXO+TlVMOw== [email protected]

把公钥写入
Gitlab安装
如果出现
Key is invalid Key
should be a single line
Fingerprint cannot be generated
因为数据里面有换行
用记事本打开,去掉记事本的“自动换行”,在拷贝添加到gitlab上

测试克隆
[[email protected] ~]# git clone [email protected]:java/app1.git
Cloning into ‘app1’…
warning: You appear to have cloned an empty repository.
自此权限打通了

创建一个master分支
Gitlab安装
进入客户端拉取测试
[[email protected] ~]# cd app1/
[[email protected] app1]# git pull
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From 192.168.56.7:java/app1

Windows连接方法
windows安装Git-2.7.2-32-bit_setup.1457942412.exe
Gitlab安装
剩下一路下一步

安装完成后
新建一个目录>>> 进入目录>>>鼠标右键>>>Git Bash Here

创建秘钥
Gitlab安装
秘钥所在路径
C:\Users\Administrator.ssh
打开id_rsa.pub公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4NPgPryAVsCdB/yZLq0CLTIYCCt+8Kyk1FRXg4uhPhJ0tL+kkHOD9xEmcGgnUWOiG/ATMmsbjfKGk7cHkQJtroA1FF+USvwdM7rLZm/jILq/6L39RiCHRz1gk213QGCqIqMEqIpwk6WHO1n6zYC24QyV84uUPpZY2ZYz+W4YxlHSTPMQ0aBqUTgP2184c6R6LPXbLVn3EMZV8LZ6AYQ0NX91ATNxMZ6RxA4AFaLDVxv0pliJiR7oy3YCcvX9vY3TcGKQwm2DSOxnlKy7GZ5VzsX+6ei12iLwSqYKhD7QzLBbwL9BtRIPMMH6dmDELj27Vss2OIR+6NcJd8abCAk4r [email protected]
给对应用户创建密码 这里以dev1为例
创建好密码后 用户自己登陆
自行添加自己创建的key

在窗口运行
git clone [email protected]:java/app1.git
Gitlab安装
至此 与windows打通了

检查 windows对应gitlab对应目录是否有项目文件
Gitlab安装
创建deploy keys
只能下载代码 不能上传代码 (一般是给jekins)
Gitlab安装

项目经理创建任务计划
新建里程碑
Gitlab安装
在里程碑中创建任务
Gitlab安装
模拟一次开发上传代码
创建一个分支
[[email protected] app1]# git checkout -b shouye
Switched to a new branch ‘shouye’
[[email protected] app1]# git status
On branch shouye
nothing to commit, working tree clean
注:-b参数 创建分支并切换到该分支
[[email protected] app1]# echo “hello word” > index.html
[[email protected] app1]# git add index.html
[[email protected] app1]# git commit -m “shouye” index.html
[shouye e5a8314] shouye
1 file changed, 1 insertion(+)
create mode 100644 index.html

上传文件到分支
[[email protected] app1]# git push origin shouye
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 272 bytes | 68.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.56.7:java/app1.git

  • [new branch] shouye -> shouye
    注:shouye是分支名称

然后开发人员在web页面发送一个Merge Requests请求给项目经理

项目经理收到请求后把提交的代码确认无误后合并到主干master上

权限管理 可视化项目管理,项目负责人可以追踪进度

SourceTree(开发人员使用)
安装改这两处地方
Gitlab安装
Gitlab安装