关于GitLab

GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab官方推荐使用Omnibus package的方式安装,本文使用Docker镜像的方式安装。

Gitlab有两个版本:

  • Community Edition 社区版
  • Enterprise Edition 企业版
    企业版比社区版功能更丰富,但需要授权码,如果没有授权码的情况下使用企业版相当于使用社区版

确保已经安装好Docker

关于Docker的安装,请参考《Ubuntu 18.04 安装Docker CE》

运行gitlab-ee镜像(第一次执行会先下载镜像)

$ sudo docker run --detach \
	--hostname gitlab-server \
	--publish 443:443 --publish 80:80 --publish 22:22 \
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ee:latest
参数说明
hostnamegitlab-server设置gitlab容器的主机名为 gitlab-server
publish443:443设置宿主机与docker容器的端口映射(如宿主端口被占用请更换别的端口,参考本文下面的内容
namegitlab设置容器的名称为gitlab(只是一个标识,可随意指定)
restartalways在容器退出时总是重启容器
volume/srv/gitlab/config:/etc/gitlab将本地目录与容器内的目录映射

映射目录的用途

本地目录容器目录用途
/srv/gitlab/data/var/opt/gitlab存储应用数据
/srv/gitlab/logs/var/log/gitlab存储日志数据
/srv/gitlab/config/etc/gitlab存储配置文件

配置GitLab

gitlab-ee容器使用的是官方Omnibus GitLab包,所有配置都在一个文件中:/etc/gitlab/gitlab.rb

  1. 编辑gitlab.rb文件
    $ sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb	##命令一
    
    由于本地目录与容器内的目录建立了映射,直接修改本地文件也是一样的,下面的指令效果跟上面的指令一样:
    $ sudo vi /srv/gitlab/config/gitlab.rb	##命令二
    
  • 命令一相当于链接到容器内的shell,进入交互模式,执行的是容器内的指令:编辑gitlab.rb文件
  • 在打开的窗口中将external_url设置为:http://192.168.199.175(该ip是宿主机的ip,根据自己主机上的ip更改)
    ## GitLab URL
    ##! URL on which GitLab will be reachable.
    ##! For more details on configuring external_url see:
    ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
    external_url 'http://192.168.199.175'
    
  • 编辑完成后输入:wq退出vi编辑器窗口
  1. 重启gitlab
    $ sudo docker restart gitlab
    

访问GitLab服务

  • 用浏览器打开 http://192.168.199.175/ ,第一次打开需要设置root密码,如下图:
    在这里插入图片描述
  • 使用root用户登录并设置GitLab,比如:创建项目,创建组,添加用户等:
    在这里插入图片描述

使用不同的端口访问GitLab

如果宿主机的80端口被占用,那么我们可以修改映射的端口,将其他端口暴露为GitLab服务

  1. 停止当前的gitlab容器
    $ sudo docker stop gitlab
    
  2. 删除gitlab容器
    $ sudo docker rm gitlab
    
  3. 使用其他端口重新启动新的gitlab容器
    $ sudo docker run --detach \
    	--hostname gitlab-server \
    	--publish 9090:9090 --publish 8022:22 \
    	--name gitlab \
    	--restart always \
    	--volume /srv/gitlab/config:/etc/gitlab \
    	--volume /srv/gitlab/logs:/var/log/gitlab \
    	--volume /srv/gitlab/data:/var/opt/gitlab \
    	gitlab/gitlab-ee:latest
    
  • 此时访问GitLab服务的地址变为:http://192.168.199.175:9090,在访问之前还需要设置external_url 为:http://192.168.199.175:9090
  • 注意:一旦在external_url最后加上端口号,容器内的nginx就会监听这个端口,也就意味着宿主机和容器的映射端口(–publish 9090:9090)必须与external_url的端口一样,都是9090
  1. 设置external_url及ssh_port
    $ sudo vi /srv/gitlab/config/gitlab.rb
    
    ## GitLab URL
    ##! URL on which GitLab will be reachable.
    ##! For more details on configuring external_url see:
    ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
    external_url 'http://192.168.199.175:9090'
    
    ### GitLab Shell settings for GitLab
    gitlab_rails['gitlab_shell_ssh_port'] = 8022
    
  2. 重启gitlab容器使设置生效
    $ sudo docker restart gitlab
    

使用GitLab创建一个项目

  1. 打开http://192.168.199.175:9090,设置root账户并登录
  2. 点击New user按钮创建一个用户
    在这里插入图片描述
  • 用户创建完成后点击右上角Edit按钮设置用户的密码
    在这里插入图片描述
  • 退出root用户,用刚刚创建的用户登录
  1. 点击Create a group 创建一个组
    在这里插入图片描述
  2. 点击New project 按钮创建一个项目
    在这里插入图片描述
  3. 复制项目地址,并用git客户端clone
    在这里插入图片描述
    $ git clone http://192.168.199.175:9090/groupone/example-project.git
    
    执行上面的命令会要求输入用户名密码,按照要求输入,接着执行下面的指令
    $ cd example-project
    $ echo '这是一个通过gitlab创建的项目' > README.md
    $ git add README.md
    $ git commit -m "add README"
    $ git push -u origin master
    
  4. 重新回到GitLab的项目详情页面,可以看到刚才提交的README.md已经在项目中了
    在这里插入图片描述
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐