- A+
一、简介
GitLab 是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务。类似github,常用在企业内部做git私有仓库使用;
二、gitlab安装
系统环境准备
最小化安装centos7,我们需要做如下配置
1、安装基础包
yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y yum install curl policycoreutils openssh-server openssh-clients postfix -y
2、添加epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、关闭防火墙
systemctl stop firewalld systemctl disable firewalld
4、关闭selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux setenforce 0
配置好系统环境,我们就可以来安装gitlab了
安装gitlab我们可以配置gitlab的yum源,然后用yum安装,也可以直接去仓库下载rpm包,然后再使用yum安装都可以
配置gitlab-ce的yum源
[root@node06 ~]# cat /etc/yum.repos.d/gitlab.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 repo_gpgcheck=0 gpgcheck=0 enabled=1 gpgkey=https://packages.gitlab.com/gpg.key [root@node06 ~]#
验证:用yum info gitlab-ce看看是否能够查询到gitlib-ce包的信息
提示:如果用yum info gitlab-ce能够查询到gitlab-ce的信息,说明我们的gitlab-ce的yum仓库配置没有问题;接下来我们就可以使用yum 来安装gitlab-ce;当然如果你觉得仓库中的gitlab版本太新,想用其他版本,我们也可以去仓库地址中找相应的rpm下载进行安装;
安装gitlab-ce
[root@node06 ~]# yum install -y gitlab-ce Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package gitlab-ce.x86_64 0:13.4.3-ce.0.el7 will be installed --> Processing Dependency: policycoreutils-python for package: gitlab-ce-13.4.3-ce.0.el7.x86_64 --> Running transaction check ---> Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed --> Processing Dependency: policycoreutils = 2.5-34.el7 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64 ……省略部分内容…… Installed: gitlab-ce.x86_64 0:13.4.3-ce.0.el7 Dependency Installed: audit-libs-python.x86_64 0:2.8.5-4.el7 checkpolicy.x86_64 0:2.5-8.el7 libcgroup.x86_64 0:0.41-21.el7 libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-34.el7 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7 Dependency Updated: audit.x86_64 0:2.8.5-4.el7 audit-libs.x86_64 0:2.8.5-4.el7 libsemanage.x86_64 0:2.5-14.el7 policycoreutils.x86_64 0:2.5-34.el7 Complete! [root@node06 ~]#
配置gitlab-ce
提示:如果没有其他要求,我们配置访问gitlab的地址就可以直接启动gitlab,通常除了配置external_url外,我们可能还需要用到发送邮件的需要;比如用户修改密码通过邮件的形式修改;
配置gitlab-ce邮件发送
首先我们要有一个互联网邮箱地址,然后登录到互联网邮箱,开启smtp功能,我这里以163的邮箱为例,其他邮箱开通smtp的方式都是大同小异
提示:这里可以用手机直接扫二维码,也可以点击手动发短信;用手机扫二维码直接生成短信内容和收件人,然后发送短信后再点击我已发送;
提示:如果是手动发送短信,就用你注册邮箱留到手机号,发送以上短信内容即可,然后点击我已发送;
提示:最后短信验证没有问题,它会给我们生成一个授权码,我们把这个授权码要记住,然后在gitlab中配置时需要用到这个授权码;
gitlab-ce配置邮件通知
提示:这里需要注意一点,如果我们要使用tls加密方式发送邮件,那么我们上面的smtp的端口就要更改为465,并且开启后面的smtp_tls为true;保存上面的配置信息后,我们需要使用gitlab-ctl reconfigure来初始化gitliab;
发送邮件的配置
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.163.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_user_name'] = "gitlab_sev@163.com" gitlab_rails['smtp_password'] = "WCNIFZJFQFFYZDCI" gitlab_rails['smtp_domain'] = "163.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false user['git_user_email'] = "gitlab_sev@163.com" gitlab_rails['gitlab_email_from'] = 'gitlab_sev@163.com'
View Code
初始化gitlab
[root@node06 ~]# gitlab-ctl reconfigure
提示:这个初始化的过程有点长,我们耐心等待就好;
提示:初始化完成后,它默认就把对应的服务启动起来了;我们就可以直接用浏览器访问刚才配置的url;它上面之所以初始化很久,是因为它后面要启动配置一堆服务;我们可以使用gitlab-ctl status来查看,它到底启动了那些服务;
查看gitlab的状态
用浏览器访问宿主机的80端口
提示:第一次访问,它会让我们先更改密码;我们配置新密码后单击下面的蓝色按钮提交密码;这个是管理员的密码;这里需要注意,我们的密码必须要大于8位,小于8位它会说我们给的密码太短了;
用root登录
提示:gitlab默认管理员用户是root,密码就是我们刚才设置的密码 ;
默认登录后的首页
到此gitlab就正常运行起来了
注册帐号
提示:这里是让我们选择一个角色;这里面有很多角色,我们选择一个即可;
提示:到此,tom用户就注册并成功登录到gitlab上了;后续tom用户就可以登录自己的帐号在上面创建项目,组等等操作;
关闭帐号注册功能
提示:用root帐号登录,点击admin area
提示:把红框前的对勾去掉,然后点击下面的save changes;
验证:现在退出root帐号,看看登录界面是否还有注册界面?
提示:可以看到注册界面就没有了;这样做主要可以统一管理的目的;如果作为一个私有仓库,应该由管理员统一管理帐号、权限;这样做也是一个比较安全的做法;
使用root用户添加帐号
提示:登录root帐号,点击上面的小扳手,然后点击newuser,就会弹出添加帐号的界面;
提示:填写好帐号名和邮箱后,直接点击后面的create user即可;后面的访问权限可以执行设定,如果是管理员选择后面的admin级别即可;
查看邮件
提示:我们点击创建用户以后,gitlab就会根据我们填写的邮件地址,给对应邮件地址发送邮件;如上所示;我们设置密码就可以直接点击上面的连接,直接设置密码即可,如下;
提示:把密码设置以后,点击change your password即可;
提示:我们设置了密码以后,gitlab会发邮件给我们说密码已经设置,登录点击那个那个地址;如上图所示;我们点击上面的连接,就可以跳转到gitlab的登录界面;然后登录刚才创建的用户和设置的密码就好;
修改用户密码
提示:在root用户新建用户后的界面上,点击edit,就可给刚才新建的用户设置密码;或者用root用户登录,点击上面的小扳手,找到下面的用户名,然后点击,也可以跳转到上面的界面;如下
提示:点击对应的用户名称,就可以跳转到山上一个图的界面,然后我们在点击edit进行编辑即可;
提示:我们输入两次相同的密码后,点击下方的save changes即可把对应用户的密码修改成我们刚才输入的密码;
提示:管理员修改密码后,gitlab会发送一份邮件给用户,说管理员把密码重置了;点击链接可以登录;
提示:使用jerry登录,它会提示我们修改密码,我们把当前密码写上,然后在后面再写新密码,点击set new password即可;
除上面管理员协助修改密码,我们也可以去登录界面点击忘记密码进行修改
提示:这里的email要填写我们对应帐号后的邮件地址,然后点击reset password;
提示:这里提示我们如果我们填写的邮件地址在我们数据库里能够找到,就会发送重置密码的邮件;显然,如果数据库里没有对应的邮件地址,也就不能给我们发送邮件;
提示:收到邮件后,我们可以点击reset password,然后他会跳转到重置密码的界面;
创建group
提示:使用root用户登录gitlab,然后点击上面的小扳手,点击new group,就可以跳转到创建项目的界面;
提示:创建组的时候,我们要选择私有,互联网,还是公开;如果我们选择私有,就表示只有在组里的成员才能够看到关联到组中的项目,如果是公开,表示登录的用户都看得到;互联网指所有用户都看得到,即便没有登录;选择好,我们就可以点击下面的create group按钮;
提示:创建好组以后,我们要关联用户到这个组里来,并且指定其在组里的权限,这里的权限有guest,ower等等,如果不清楚个角色的权限,可以点击上面的here哪里;选择好用户和角色以后,就可以点击add users to group;
提示:把用户关联到对应组里以后,用户会收到一封邮件,如果我们不想待在对应的组里,可以选择离开组;如下
创建项目
提示:使用root用户登录gitlab,然后点击上面的小扳手,点击new project,就可以跳转到创建项目的界面;
提示:这里和创建组有点类似,这里需要注意一点,我们要选择创建的项目属于组还是用户,如果是组就选择组名,对于组中的成员都会对该项目拥有对应角色的权限;然后选择好以后,点击create project;
提示:项目创建好以后,我们就可以克隆项目到本地了;如上复制对应协议的连接地址,在本地执行git clone 就可以把对应的项目克隆到本地;我们也可以直接在项目中添加文件等等;在项目的下面它告诉我们在命令行中如何克隆项目,提交等等操作;
克隆刚才创建的项目到本地
提示:这里使用git clone克隆,它要求我们输入用户名和密码,用户名和密码验证正确后,我们就可以把对应的项目克隆到本地;这里警告我们所我们克隆的项目是一个空仓库;
进入刚才克隆的仓库,添加文件
将本地仓库push到远端仓库
提示:这里提示我们没有指定分支;解决办法明确指定把本地的origin分支 push到远端的master分支;
验证:在gitlab上,看看我们push的项目中是否有passwd文件?
到此,在客户端使用git命令可以将gitlab上创建的项目拖到本地,也可以将本地仓库push到远端仓库;
在gitlab上更改passwd文件内容
在本地使用git fetch 取远端仓库更新
[root@node06 test]# git fetch Username for 'http://192.168.0.46': jerry Password for 'http://jerry@192.168.0.46': remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From http://192.168.0.46/test-app/test fecc791..08cbf1f master -> origin/master [root@node06 test]#
提示:git fetch命令是从远端仓库取更新到本地,但并不与本地分支进行合并;
将更新应用到本地
取回远程服务器更新,而后与本地的指定分支合并
提示:以上使用git pull命令是将远端仓库更新取回,并和本地的master合并;默认不加后面的远端分支和本地分支,默认远端是origin,本地是master;如果本地或远端有多个分支需要明确指出;
验证:看看本地的passwd是否变了?
在本地新建分支,然后push到远端仓库
提示:从上面反馈的显示在远端仓库生成了一个新的分支;
验证:去远端gitlab上查看是否有devel分支生成?对应分支下是否有fstab和passwd文件?
删除远端仓库分支
[root@node06 test]# git push origin :devel Username for 'http://192.168.0.46': jerry Password for 'http://jerry@192.168.0.46': To http://192.168.0.46/test-app/test.git - [deleted] devel [root@node06 test]#
验证:查看远端gitlab对应仓库是否还有devel分支?
提示:可以看到gitlab上的devel分支就没有了;到此gitlab经过测试都是正常工作的,后续我们就可以使用我们搭建的gitlab来管理项目,代码管理;