大家好,我是Mandy。今日共享的主题内容是怎么运用GitLab建立归于自己的代码办理渠道。

为什么会单独共享这篇文章呢,相信在许多的开发同学任职的公司中,都用到了gitlab来做代码办理渠道,一起结合GitLab的一些主动化功用,完成devops的功用。

GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它运用Ruby言语写成。后来,一些部分用Go言语重写。截止2018年5月,该公司约有290名团队成员,以及2000多名开源贡献者。GitLab被IBM,Sony,JlichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等组织运用。

GitLab是由GitLabInc.开发,运用MIT许可证的根据网络的Git库房办理东西,且具有wiki和issue盯梢功用。运用Git作为代码办理东西,并在此基础上建立起来的web服务。

GitLab 是一个用于库房办理体系的开源项目,运用Git作为代码办理东西,并在此基础上建立起来的web服务。安装办法是参阅GitLab在GitHub上的Wiki页面。一起官方也供给了免费版本,能够支持独立安装,也能够支持直接运用官方建立的web服务。

怎么运用Gitlab建立归于自己的代码办理渠道

与GitLab同类的产品也许多,例如国外微软旗下的GitHub,国内的Gitee都归于同类的代码办理渠道,一起这些渠道也结合了一些企业开发相关的功用。例如项目使命办理、项目主动化构建发布等等功用。

运用GitHub的同学应该知道,GitHub归于国外的网站在拜访上经常遇到无法拜访或许拜访较慢的状况,而且个人是无法直接创立私有库房,你只能经过创立公开库房,关于有私有库房的需求就需求付费运用而且费用还不算低。

怎么运用Gitlab建立归于自己的代码办理渠道

关于Gitee来说,归于国内的网站避免了拜访的问题,但Gitee是开发部分免费功用,其他的功用是需求收费运用。

怎么运用Gitlab建立归于自己的代码办理渠道

根据上述的一些原因,企业也挑选GitLab来建立代码办理渠道,一起里边的一些主动化功用也是彻底不亚于GitHub、Gitee。关于个人开发者运用GitLab,不只能够办理自己的代码,一起也能学到GitLab与其他的体系完成一些主动化功用,这将是一个不错的挑选。

怎么建立

接下来,我将全面的演示怎么在Linux上建立GitLab。整体来说是十分的简略,整篇文章都是选用Docker来建立,究竟现在Docker的运用不管是个人仍是企业都是十分主流的技能栈。

这儿要特别的说明一下,强烈建议你挑选一个高装备的服务器来建立GitLab,在我个人的测验过程中发现GitLab是十分消耗内存,基本建立好GitLab就会占用4G的内存,假如你只是在本地建立用作学习,应该是彻底没问题的,究竟个人的电脑应该没有低于4G内存大小的计算机。

检索官方镜像并拉取到本地

经过docker search xxx能够查找Docker官方镜像中,关于GitLab的镜像,你会看到如下许多的镜像。有的是一些插件,有的是根据官方镜像构建的镜像。这儿仍是强烈引荐直接运用官方供给的GitLab镜像。

# 查找gitlab镜像
docker search gitlab
[root@VM-4-9-centos ~]# docker search gitlab
NAME                                     DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
bitnami/gitlab-runner                                                                     35
bitnami/gitlab-runner-helper                                                              3
alpinelinux/gitlab-runner-helper         Helper image container gitlab-runner-helper …   4
rapidfort/gitlab-ce                                                                       12
okteto/gitlab                                                                             2
alpinelinux/gitlab-runner                Alpine Linux gitlab-runner (supports more ar…   5
drud/gitlab-ce                                                                            18
accurics/gitlab-connector                                                                 0
domjudge/gitlabci                                                                         0
wodby/gitlab                             Alpine-based GitLab CE container image           0
ustclug/gitlab                           Dockrized GitLab used by LUG@USTC                0
alpinelinux/gitlab                       Alpine Linux based Gitlab image                  8
itisfoundation/gitlab-runner-docker                                                       0
pnnlmiscscripts/gitlab-runner-operator                                                    0
jitesoft/gitlab-ci-runner                  Image inheriting from the gitlab runner. I…   0
vulhub/gitlab                                                                             0
alpinelinux/gitlab-shell                 Alpine Linux based gitlab-shell image, provi…   1
wodby/gitlab-nginx                       Nginx for GitLab CE container image              0
corpusops/gitlabtools                    https://github.com/corpusops/docker-gitlabto…   0
vulhub/gitlab-cve-2016-9086              gitlab cve-2016-9086                             0                    [OK]
drud/gitlab-backups                                                                       0
gromacs/gitlab-runner                                                                     0
wodby/gitlab-runner                                                                       0
avenga/gitlab-job                                                                         0
osuosl/gitlab-runner-helper                                                               0

接下来拉取官方镜像到本地,直接拉取最新的镜像。

docker pull gitlab/gitlab-ce:latest

拉取好镜像之后,能够检查本地是否拉取到镜像。这儿运用docker images检查本地的镜像有哪些,下面就能够看到gitlab/gitlab-ce的镜像地址,表明咱们现已成功拉取到本地。

[root@VM-4-9-centos ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
gitlab/gitlab-ce        latest    df5003a3217c   2 days ago      2.86GB
zmister/mrdoc           v6        f4973a0fcd4b   3 months ago    1.34GB
postgres                15.2      bf700010ce28   6 months ago    379MB
openspug/spug-service   latest    db1e45c81bec   7 months ago    593MB
surveyking/surveyking   latest    7445aa54d4c4   12 months ago   157MB
mariadb                 10.8.2    51adad759c74   21 months ago   414MB

发动镜像容器

拉取到镜像之后,就能够根据镜像在本地发动一个GitLab容器。这儿要说明一点,你再创立容器时,一定要做磁盘挂载和端口映射。不过磁盘挂载很可能容器删除导致数据丢掉,端口映射是为了经过宿主机的拜访到达拜访容器内部的GitLab服务,否则是无法直接拜访容器内的服务。

# 发动容器
docker run 
 -itd  
 -p 9981:80 
 -p 9922:22 
 -v /opt/gitlab/etc:/etc/gitlab  
 -v /opt/gitlab/log:/var/log/gitlab 
 -v /opt/gitlab/opt:/var/opt/gitlab 
 --restart always 
 --privileged=true 
 --name gitlab 
 gitlab/gitlab-ce

上述指令首要的作用是:

1、 run:发动容器指令,这是Docker自带的指令,创立容器时有必要运用该指令才干创立容器。

2、-itd:-i参数是以交互形式运行容器,通常与 -t 一起运用指令解释;-t参数是为容器重新分配一个伪输入终端,通常与 -i 一起运用;-d参数是后台运行容器,并回来容器id。

3、-p:是做端口映射,第一个-p是为了将容器内的web端口映射宿主机的端口,这样就能经过宿主机的端口直接拜访到容器内的端口,也就是说后面经过浏览器拜访GitLab就需求该端口;第二个-p是为了将容器内22端口映射至宿主机9922端口,这是拜访ssh的端口,例如后面运用指令git push代码到GitLab会用到该协议。

4、-v:该参数为了将宿主机的目录和容器内的目录做一个映射,容器内的文件和宿主机完成同步,避免数据丢掉,哪怕是后续你容器被删掉,宿主机的文件坚持存在,数据就不会丢掉。

5、–restart:坚持容器主动发动。比如你封闭了Docker服务,容器也会跟着退出,再次发动Docker服务时,容器会主动发动,不需求你手动去发动容器。

6、–privileged:该参数是为了让容器内获取到宿主机的root权限。

7、–name:该参数是为了给容器取一个称号,记住这个称号要不能重复。例如你本地有一个姓名叫做A的容器,就不能取相同称号的容器。

8、gitlab/gitlab-ce:该参数是表明容器从哪一个镜像中创立,前面咱们拉取了官方镜像到本地库房,因此会主动从本地的镜像中去创立。假如你没拉取镜像到本地,此刻会主动去Docker官方镜像库房中拉取到本地。

此刻,咱们的GitLab容器现已创立结束,但要拜访容器,还需求你修正一些其他的装备。这儿引荐直接在容器中去修正装备,假如直接在宿主机修正,可能出现同步到容器中存在延迟,导致拜访出现问题。

修正装备

在修正装备之前,你需求明确如下几点:

1、拜访方法:假如你是想经过域名的方法拜访,你需求解析一个域名,假如不需求直接运用装备成宿主机的IP地址。我这儿假定域名是a.baidu.com。

2、ssh方法:ssh适用于代码同步,这儿也需求装备成域名或许IP的方法。

#第一步是进入到容器内部,gitlab能够写成你容器的id
docker exec -it gitlab /bin/bash
#修正gitlab.rb的装备文件
vi /etc/gitlab/gitlab.rb
#gitlab拜访地址,能够写域名。假如端口不写的话默许为80端口
external_url 'http://192.168.1.194'
或许是
external_url 'a.baidu.com'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.1.194'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

修正好之后,在容器中重启gitlab-ctl reconfigure装备,而且运用gitlab-ctl restart来重启GitLab服务。此刻就能够直接运用IP的方法拜访GitLab,假如你装备的是域名,还需求在Linux体系中运用域名装备,做端口代理拜访到GitLab服务。假定你用的是NGINX做web服务,你需求做如下的装备。

server{
	listen 80;
	server_name a.baidu.com;
	location / {
		proxy_pass http://127.0.0.1:9981;
	}
}

装备好域名之后,重启NGINX服务nginx -s reload就能够经过域名的方法拜访。

怎么运用Gitlab建立归于自己的代码办理渠道

注意事项

在网上有的文章会说到如下的装备操作:

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab:
  host: 192.168.1.194
  port: 9980
  https: false

但实际测验下来,并非一定要做这一步操作。在你上面修正好装备之后,执行“gitlab-ctl reconfigure指令重启后,上面的gitlab.yml`文件会主动帮你同步装备。

账号修正

当你能拜访建立好的GitLab服务,而且能够拜访,但一开始会让你进行登录注册,GitLab默许的超级办理员账号是root,此刻是需求你修正默许的暗码。

# 进入容器内部
docker exec -it gitlab /bin/bash
 
# 进入控制台
gitlab-rails console -e production
 
# 查询id为1的用户,id为1的用户是超级办理员
user = User.where(id:1).first
# 修正暗码为gitlab001
user.password='gitlab001'
# 保存
user.save!
# 退出
exit

此刻你运用root账号,而且暗码是gitlab001就能够正常拜访了。

自此GitL按服务就算建立完成,你就能够直接运用了。更多的功用,你也能够直接进行探索运用。

相关链接

一、GitHub具有28kstar,Go开源的多文件存储神器

二、强烈引荐运用的Markdown编辑器东西

三、又遇到一款神仙等级的PDD绘图东西

四、运用Go开源的一款功能监控软件