1、准备工具

安装方式为docker安装,如果尚未安装docker,按照 “安装docker” 的第3步进行安装即可 安装docker Docker 20.10.5 安装(Centos7)


2、安装

2.1 获取镜像

  1. 获取gitlab镜像包(这里的Community Edition (CE)表示社区标本)

    1. docker pull gitlab/gitlab-ce

    image.png

  2. 查看镜像

    1. docker images

    image.png

2.2 创建GitLab工作目录

  1. 创建config、logs、data3个目录
    1. mkdir -p /home/gitlab/config
    2. mkdir -p /home/gitlab/logs
    3. mkdir -p /home/gitlab/data

2.3 运行脚本启动服务

  1. 参数介绍
    • detach:指定容器运行于前台还是后台
    • hostname:指定主机地址,如果又域名可以指定域名
    • publish:指定容器暴露的端口,左边的端口表示宿主机的端口,右边的表示容器的端口
    • name:给容器起一个名字
    • restart always:总是重启
    • volume:数据卷,在docker中式最重要的一个知识点
      1. docker run --detach \
      2. --hostname 192.168.0.125 \
      3. --publish 7001:443 --publish 7002:80 --publish 7003:22 \
      4. --name gitlab --restart always \
      5. --volume /home/gitlab/config:/etc/gitlab \
      6. --volume /home/gitlab/logs:/var/log/gitlab \
      7. --volume /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

2.4 修改GitLab.rb配置文件

  1. 按照上面的方式,gitlab容器运行没有问题,但是gitlab上创建项目的时候,生成项目的URL访问地址是容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机器:/home/gitlab/config/gitlab.rb)配置三个参数

    1. vim /home/gitlab/config/gitlab.rb
  2. 修改IP + 邮箱发送邮件的配置

    1. external_url 'http://192.168.0.125'
    2. gitlab_rails['gitlab_ssh_host'] = '192.168.0.125'
    3. gitlab_rails['gitlab_shell_ssh_port'] = 7003
    4. gitlab_rails['smtp_enable'] = true
    5. gitlab_rails['smtp_address'] = "smtp.qq.com"
    6. gitlab_rails['smtp_port'] = 465
    7. gitlab_rails['smtp_user_name'] = "1315577585@qq.com"
    8. gitlab_rails['smtp_password'] = "授权码"
    9. gitlab_rails['smtp_domain'] = "smtp.qq.com"
    10. gitlab_rails['smtp_authentication'] = "login"
    11. gitlab_rails['smtp_enable_starttls_auto'] = true
    12. gitlab_rails['smtp_tls'] = true
    13. gitlab_rails['gitlab_email_from'] = '1315577585@qq.com'

    【注意】:**extrnal_url **和 **gitlab_rails**这两个IP参数建议固定操作系统的静态不变的IP或者是域名进行配置,假设IP变得话在GitLab新建项目的时候,生成的IP还是原来的IP,此时就无法推送代码在GitLab里面 ===>QQ授权码生成在”设置”—->”账户” image.png**image.png

2.5 进入GitLab容器重配置服务

  1. 进入gitlab容器前台

    1. docker exec -it gitlab /bin/bash
  2. 重置gitlab客户端的命令

    1. gitlab-ctl reconfigure
  3. 由于我们运行是使用数据卷参数进行运行的,宿主机的gitlab.rb文件修改了,gitlab的文件会跟着改,但是容器的文件不会跟着生效,必须要进去容器里面进行命令执行,重置配置文件比较耗费时间,需要耐心等待,如果时间比较短说明成功率不高,而且进去容器之后就退出啦。

image.png

2.6 重启容器

  1. docker restart gitlab

2.7 查看端口状态

  1. netstat -tnl

image.png

2.8 GitLab常用命令

  1. gitlab-ctl reconfigure  // 重新应用gitlab的配置
  2. gitlab-ctl restart    // 重启gitlab服务
  3. gitlab-ctl status    // 查看gitlab运行状态
  4. gitlab-ctl stop     // 停止gitlab服务
  5. gitlab-ctl tail     // 查看gitlab运行日志

3、初始GitLab

3.1 浏览器查看

  1. 浏览器输入宿主机IP + 7002 ===> http://192.168.0.125:7002/,重置密码即可

image.png

  1. 重置密码(root/root123qwe),点击Sign in进行登录

image.png

3.2 配置设置

  1. 点击 “Preferences” 进入配置页面

image.png

  1. 滑动到底部修改 “Localization” —> “Language” —-> 简体中文 —-> “save changes”,刷新页面生效

image.png

3.3 邮箱认证

  1. 点击右上角头像 —> “prefences” —> “电子邮件”,选中区域填写自己的有效邮箱,点击添加电子”邮件地址”按钮,会显示邮箱处于未验证状态

image.png

  1. 同级目录点击”用户资料”,主要设置中”电子邮件”红色框中有刚刚添加的电子邮箱,点击”Resend confirmation e-mail”跳转发送邮件页面

image.png

  1. 进入自己的邮箱,点击”Confirm your email address”,跳转页面

image.png

  1. 默认跳转的路径存在问题需要手动修改,添加端口

image.png

【注意】:添加如下 image.png

  1. 出现如下图所有表示邮箱验证成功

image.png

  1. 此时最初邮箱验证显示”已验证”

image.png

  1. “用户资料”信息也会同步更新

image.png

4、使用GitLab

4.1 创建分组

  1. 选择你的群组 —> 创建”新建群组”

image.png

  1. 创建群组名称

image.png

4.2 创建项目

创建项目方式:分组中创建/点击创建项目按钮,本次提供在分组中创建项目配置方案

  1. “群组” —> “你的群组”,点击 你的目标分组进入分组中

image.png

  1. 点击”新建项目”

image.png

  1. 系统提供三种创建方式,本次选择”创建空白项目”

image.png

  1. 填写”项目名称”,这种方式默认回显出当前的项目组,点击”新建项目”,完成创建空白项目

image.png

4.3 添加SSH密钥

  1. 点击”添加SSH密钥”

image.png

  1. 打开本机公钥

image.png

  1. 复制”id_rsa.pub”中的内容到文本域框中 —> 点击”添加密钥”

image.png
【注意】:git之前没有生成公钥过,
git使用 【 todo 日后更新添加解决方案】。。。。。。

  1. git公钥生成

    1. ssh-keygen -t rsa -b 2048 -C "example@example.com"
  2. 保存展示添加过的公钥列表

image.png

5、上传代码(空项目)

  1. 官方提供方案
  • 1.Git 全局设置

    1. git config --global user.name "lixin"
    2. git config --global user.email "1315577585@qq.com"
  • 2.创建一个新仓库

    1. git clone git@192.168.0.125:lixin/lixin-demo.git
    2. cd lixin-demo
    3. touch README.md
    4. git add README.md
    5. git commit -m "add README"
    6. git push -u origin master
  • 3.推送现有文件夹

    1. cd existing_folder
    2. git init
    3. git remote add origin git@192.168.0.125:lixin/lixin-demo.git
    4. git add .
    5. git commit -m "Initial commit"
    6. git push -u origin master
  • 4.推送现有的 Git 仓库

    1. cd existing_repo
    2. git remote rename origin old-origin
    3. git remote add origin git@192.168.0.125:lixin/lixin-demo.git
    4. git push -u origin --all
    5. git push -u origin --tags
  1. 本文提供方式(本地文件上传到git仓库)

【使用】”3.推送现有文件夹”这种方式

初始化、绑定远程仓库、提交
image.png
推送到远程仓库的主分支即可,完成代码的推送
image.png

6、 下拉代码

  1. 复制克隆地址使用HTTP克隆,目前需要手动添加端口

image.png

  1. 使用克隆命令pull代码

    1. git clone http://192.168.0.125:7002/lixin/lixin-demo.git

    image.png

  2. 本地已经可以查询到刚刚拉取的代码

image.png

7、异常情况

7.1 known_hosts配置异常

  1. 出现如下问题是因为 “known_hosts”文件中已经配置服务器IP相关公钥信息,但是和我们保存SSH的公钥信息存在歧义

image.png

  1. 打开 “C:\Users\woshi.ssh\known_hosts” (.ssh对应目录)

image.png

  1. 删除与服务器IP相同的信息即可

image.png

参考文档

  1. Docker安装GitLab全过程详解 https://www.jianshu.com/p/0bc9b4755082
  2. 记一次gitlab添加用户收不到邮件的解决办法 https://www.cnblogs.com/wenwei-blog/p/6286944.html