gitlab安装及使用
1 GitLab简介
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
常用的网站:
官网:https://about.gitlab.com/
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
安装gitlab
1 从官网下载rpm包
[root@gitlab ~] # ll
-rw-r--r-- 1 root root 389758391 May 2 16:49 gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
2 安装依赖
[root@gitlab ~] # yum -y install policycoreutils-python
3 安装rpm包
[root@gitlab ~] # rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
PS 出现一个老虎头代表成功
4 检查包
[root@gitlab ~] # rpm -qa |grep gitlab
gitlab-ce-10.2.2-ce.0.el7.x86_64
5 编辑文件
[root@gitlab ~] # vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.200'
6 重新配置
vim /etc/gitlab/gitlab.rb # gitlab 配置文件
更改url地址为本机IP地址 external_url 'http://10.0.0.203'
gitlab-ctl reconfigure # 更改配置文件后需重新配置
完成操作
/opt/gitlab/ # gitlab的程序安装目录
/var/opt/gitlab # gitlab目录数据目录
/var/opt/gitlab/git-dfata # 存放仓库数据
gitlab-ctl status # 查看目前gitlab所有服务运维状态
gitlab-ctl stop # 停止gitlab服务
gitlab-ctl stop nginx # 单独停止某个服务
gitlab-ctl tail # 查看所有服务的日志
网页访问
10.0.0.200
1 重置密码 (至少设置8位)
2 设置完重新登陆
3 登陆后的界面
4 更改欢迎界面的显示内容
5 创建项目图示
创建一个组
创建一个项目
添加公钥
[root@gitlab ~] # cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmFBc+oKI+rC829dyXP+865GijZBylHephesM9gBL/CI5nCrU62hZW9p1/fCvTFc2gnU7WV/huLYxp28rq7FKdOH6foS+Hu+JJ5jNEshRdK3S2lhCvyYeYOUYJyc+3D+ITCpjYfCTBOh1QpOc8SP7oqVa/EJxk/dwa2Qqcs7T/5RnRQv92YxJRvj1s0M5xJEfxNfF6CLE/8okSntlhQQLFAhZv8dfBj9o926XgaGPHC0BhClJtdnGiZJuYWQAlUHOtn35PBoGbIwwi1aZ/QWTNGoyhleOGgkAovL1I9N4Q6avU9P0proQYFKggXxLyfOlzT8H8x9WaNqEfr9aCwYbN root@gitlab
查看所有项目
删除原来的
[root@gitlab ~] # cd git_data/
[root@gitlab git_data] # git remote remove origin
[root@gitlab git_data] # git remote -v
[root@gitlab git_data] # git remote add origin git@10.0.0.200:oldboy/test.git #下载仓库
[root@gitlab git_data] # git push -u origin master #推送仓库
推送文件到远程仓库
[root@gitlab git_data] # touch oldboy.txt
[root@gitlab git_data] # git add .
[root@gitlab git_data] # git commit -m "newfile oldboy.txt"
[master 8ed5d8d] newfile oldboy.txt
2 files changed, 1 insertion(+)
create mode 160000 git_data01
create mode 100644 oldboy.txt
[root@gitlab git_data] # git push -u origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 299 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@10.0.0.200:oldboy/test.git
ffabb5a..8ed5d8d master -> master
Branch master set up to track remote branch master from origin.
准备一个Jenkins的虚拟机 充当开发者
10.0.0.201
内存 2G
磁盘 50G
创建一个用户
换一个浏览器登陆dev这个账户
登陆后发现并没有权限
把用户添加到组
添加公钥
创建公钥
[root@jenkins ~] # ssh-keygen
[root@jenkins ~] # cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6UP2jq/sUBBMRFrQ+TXuQiHMU7J4wKNeAgJYF1kRhn7k7AjAFmAl2WQ7LcMRC8rabHLTiqcpmd9IKd8e1ofgCFSoJiCij8vcVitvsD9OBwnOz1HN7wp6WBQ3UZAwQoeY3JgB5ZRRF5uBgFolM9mh/BoDE5c2MV+FGKBGLOMrM/uj6XllH8iEo26s67Bt5r/QiBNua4aa9EOH3hQbcP9MApjIXojx/ImjonzX0l5U2VoxTXXqUMWsMZeCDBOOdyWWhjh9chckpJlEF0R+N0qablHaCtPi+VWVORzAtcJOaZx9Vjnn0flbauZU2sB5ydqpNcwDQiILQ2bOapKf0kWdz root@jenkins
[root@jenkins git_data] # git clone git@10.0.0.200:oldboy/test.git
检查
[root@jenkins git_test] # cd git_test
[root@jenkins git_test] # git remote -v #把远程仓库也克隆下来
[root@jenkins git_test] # git config –-global user.name=“dev”
[root@jenkins git_test] # git config –-global user.email=“dev@mail.com”
[root@jenkins git_test] # git config –-global color.ui=true
[root@jenkins git_test] # touch alex.txt
[root@jenkins git_test] # git add .
[root@jenkins git_test] # git commit -m "newfile alex.txt"
[root@jenkins git_test] # git push -u origin master
显示结果
[root@jenkins git_test] # git push -u origin master
[root@jenkins git_test] # touch dev.txt
[root@jenkins git_test] # git add .
[root@jenkins git_test] # git commit -m "newfile dev.txt"
[root@jenkins git_test] # git push -u origin master
[root@jenkins git_test] # git branch -b test
代码合并 分支保护
[root@jenkins git_test] #touch master.txt
[root@jenkins git_test] #git add .
[root@jenkins git_test] #git commit -m "newfile master.txt"
[root@jenkins git_test] #git push -u origin master
出现报错 分支落后于远程分支
[root@jenkins git_test] #git pull #随便填点东西,可以把新的东西拉取下来 把远端的代码进行更新
[root@jenkins git_test] #git push -u origin master #再一次推送就ok
测试dev分支推送代码则显示为拒绝,如果还是可以推送请查看配置保护分支选项
[root@web01 get_test]# git checkout master
[root@web01 get_test]# git merge dev
[root@web01 get_test]# git push -u origin master
推送测试
返回master端测试推送,由于其他分支进行推送,和master端内容不一致,所以无法进行推送,使用git pull把代码拉取到本地,或者git fetch 把代码拉取到本地仓库后进行合并(注意:git pull = git tetch+git merge)