一、初始GitLab
GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。
它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
Git的家族成员
Git:是一种版本控制系统,是一个命令,是一种工具。
Gitlib:是用于实现Git功能的开发库。
Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
二、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(git) | 172.25.83.1 |
三、Gitlab常用命令
gitlab-ctl start #启动所有gitlab组件;
gitlab-ctl stop #停止所有gitlab组件;
gitlab-ctl restart #重启所有gitlab组件;
gitlab-ctl status #查看服务状态;
gitlab-ctl reconfigure #修改配置文件之后,重新加载gitlab配置文件并启动所有gitlab组件
vim /etc/gitlab/gitlab.rb #修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace #检查gitlab;
gitlab-ctl tail #查看日志;
gitlab-ctl --help #查看gitlab命令的帮助
四、部署GitLab
1、下载并安装Gitlab社区版软件:gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm
[root@server1 ~]# ls
gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm
[root@server1 ~]# yum install gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm -y #安装GitLab社区版。ce表示社区版,ee表示企业版
2、编辑配置文件/etc.gitlab/gitlab.rb
[root@server1 ~]# vim /etc/gitlab/gitlab.rb 13 external_url 'http://172.25.83.1' #访问gitlab的地址
[root@server1 ~]# gitlab-ctl reconfigure #重载服务,过程较长耐心等待
重载服务之后,查看启动的所有的gitlab组件
[root@server1 salt]# gitlab-ctl status
run: alertmanager: (pid 1300) 275s; run: log: (pid 1298) 275s
run: gitaly: (pid 1293) 275s; run: log: (pid 1292) 275s
run: gitlab-monitor: (pid 1297) 275s; run: log: (pid 1296) 275s
run: gitlab-workhorse: (pid 1285) 275s; run: log: (pid 1284) 275s
run: logrotate: (pid 1280) 275s; run: log: (pid 1279) 275s
run: nginx: (pid 1289) 275s; run: log: (pid 1288) 275s
run: node-exporter: (pid 1287) 275s; run: log: (pid 1286) 275s
run: postgres-exporter: (pid 1302) 275s; run: log: (pid 1301) 275s
run: postgresql: (pid 1278) 275s; run: log: (pid 1274) 275s
run: prometheus: (pid 1299) 275s; run: log: (pid 1294) 275s
run: redis: (pid 1277) 275s; run: log: (pid 1273) 275s
run: redis-exporter: (pid 1291) 275s; run: log: (pid 1290) 275s
run: sidekiq: (pid 3104) 90s; run: log: (pid 1281) 275s
run: unicorn: (pid 1276) 275s; run: log: (pid 1275) 275s
3、登录gitlab http://172.25.83.1
用户:root 第一次登录需要强制修改密码(密码至少要8位)
用修改过后的密码进行login
4、创建Project
<1>安装Git工具linux:安装Git,使用自带的源安装。—其实在之前配置Git本地仓库时已经做过这步,这里不需要再做
[root@server1 ~]# yum install git -y
<2>生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub—其实在之前配置Git本地仓库与Github远程仓库关联时已经做过这步,这里不需要再做
[root@server1 ~]# ssh-keygen
[root@server1 ~]# ls .ssh/
id_rsa id_rsa.pub
<3>在GitLab的主页中新建一个Project
在web界面点击“Create a project”:
在Project name中填入要创建的项目的名称(我这里创建的项目的名称是test),勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件,并点击“Create project“创建工程
根据提示,我们点击橙色字体的“add an SSH key”,进行SSH key的添加
[root@server1 ~]# cd .ssh/
[root@server1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3xeeqOavrqvenQHbGkepogV1YbggV/086mA28HX1iXe3MVXIKt9+1gBJdN8lmhUz9HPgADPBhaOfM3jgP459lf9bFBqd0x5doOA+JN0LtEiM0K4kSQ8yb3ViExN8iqLd4jxVhcjIuPmHfD+JhEG0iGJ79tXNL3m7GlONNq7lODvNuquq5kUK2u7/9cJfI9Bmow8lX92qxF0jz82n73UeYOvCh1069vWDVbONCUB7lJMdXQPC2XPfelyuWmDGExxdUqM4xLcTBBFx5XsMyjQvA+zljytYKphgNEO3hC0hWGxKnEw4R5U/stAROBG/W+nNzkupoWGFjIo1Zax52PY+x root@server1
点击Add key
5、克隆项目test,在本地生成同名目录,并且目录中会有所有的项目文件
<1>进入创建的test项目主界面
点击Your projects
点击Administrator / test
<2>将Gitlab上的远程项目test克隆到本地
[root@server1 ~]# git clone git@172.25.83.1:root/test.git #在哪个目录下执行该命令都可以,我这里想把克隆到本地的test项目放在root用户的家目录下,所以我这里在root用户的家目录下执行该名林。
Cloning into 'test'...
The authenticity of host '172.25.83.1 (172.25.83.1)' can't be established.
ECDSA key fingerprint is 36:fe:bc:26:f8:92:25:e4:b6:f3:d3:54:dc:06:a5:c0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.83.1' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@server1 ~]# ls
test
注意把Git库的地址换成你自己的,然后进入test目录看看,已经有README.md文件了:
[root@server1 ~]# cd test/
[root@server1 test]# ls
README.md
[root@server1 test]# cat README.md
# test
6、我们可以在本地项目test中编辑内容,并将内容推送到Gitlab远程项目test下
<1>添加git用户信息—其实在之前配置Git本地仓库时已经做过这步,这里不需要再做
[root@server1 demo]# git config --global user.name xjj #设置用户名
[root@server1 demo]# git config --global user.email xjj@xjj.com #设置用户邮箱
[root@server1 ~]# pwd
/root
[root@server1 ~]# cat .gitconfig
[user]name = xjjemail = xjj@xjj.com
<2>创建需要上传到GitLab中的目标文件
[root@server1 test]# pwd
/root/test
[root@server1 test]# echo www.xin.com > index.html #必须在项目目录test下执行该命令
[root@server1 test]# cat index.html
www.xin.com
<3>将index.html文件加入到索引中
[root@server1 test]# git add index.html
<4>将index.html提交到本地仓库
[root@server1 test]# git commit -m "add index.html"
[master 9bcf5d2] add index.html1 file changed, 1 insertion(+)create mode 100644 index.html
<5>将文件同步到GitLab服务器上
[root@server1 test]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.83.1:root/test.gitdf45c1d..9bcf5d2 master -> master
Branch master set up to track remote branch master from origin.
<6>在网页中查看上传的index.html文件已经同步到GitLab中
点击index.html