DevOps 之 GitLab 安装、汉化及常见错误处理

公司现在开始实行 DevOps 的开发模式,代码托管采用了 GitLab 搭建私有代码仓库,本文记录了 GitLab 的安装、汉化及常见错误处理。

安装GitLab

准备工作

1
2
3
4
5
6
7
8
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

配置镜像源地址

1
2
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce

安装完毕后执行注册启动

1
sudo gitlab-ctl reconfigure

修改访问 IP 和 端口号

  1. vim /etc/gitlab/gitlab.rb
  2. 修改 external_url ,比如 http://localhost:9080

配置邮件发送服务

vim /etc/gitlab/gitlab.rb 修改与 email 有关的配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## 邮箱基础配置
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '237497819@qq.com'
gitlab_rails['gitlab_email_display_name'] = '237497819'
gitlab_rails['gitlab_email_reply_to'] = '237497819@qq.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['gitlab_default_can_create_group'] = true
gitlab_rails['gitlab_username_changing_enabled'] = true
## smtp 配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "237497819@qq.com"
gitlab_rails['smtp_password'] = "*********"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"
## 用户配置
user['git_user_email'] = "237497819@qq.com"

汉化 GitLab

注意:汉化之前是必须设置root密码登录过的,否则有些必须文件没有生成,汉化不成功。

  1. 汉化包版本选择:version ≤ 8.8version > 8.8

    查看安装的 GitLab 的版本

    1
    2
    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    10.3.2
  2. 停止 GitLab 服务:gitlab-ctl stop

  3. git clone https://gitlab.com/xhang/gitlab.git

  4. 汉化操作:

    1
    2
    cd gitlab
    yes|cp -rf ../gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
  5. 重新启动查看效果:gitlab-ctl start

    个人首页

    管理员区域

日常 GitLab 管理

1
gitlab-ctl start|stop|status|restart

常见错误解决

在卸载 GitLab 然后再次安装执行 sudo gitlab-ctl reconfigure 的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行。

  1. 按住 CTRL+C 强制结束;
  2. 运行:sudo systemctl restart gitlab-runsvdir
  3. 再次执行:sudo gitlab-ctl reconfigure

gitlab-ctl reconfigure 之后,访问浏览器出现如下错误:Whoops, GitLab is taking too much time to respond.

  1. 使用 gitlab-ctl tail 查看完整的 gitlab-ctl reconfigure 日志

  2. 我出现这个的错误是因为日志中出现了端口占用

    1
    2
    3
    ==> /var/log/gitlab/unicorn/unicorn_stderr.log <==
    Errno::EADDRINUSE: Address already in use - bind(2) for 127.0.0.1:8080
  3. vim /etc/gitlab/gitlab.rb 去修改 unicorn 的 url 和 port

    1
    2
    unicorn['listen'] = '127.0.0.1'
    unicorn['port'] = 8888
  4. 再次执行:sudo gitlab-ctl reconfigure

  5. 有时也可能是超时引起的这个错误,vim /etc/gitlab/gitlab.rb 去修改 webhook_timeout

    1
    2
    3
    4
    ## unicorn 连接超时
    unicorn['worker_timeout'] = 90
    ## WebHook 超时时间
    gitlab_rails['webhook_timeout'] = 60

配置 push 操作时发送 diff 信息给指定人邮箱

  1. 创建用户的时候,邮箱保证正确。

  2. User Settings –> Profile –> Main Settings –> email / public email 里是你的邮箱

  3. User Settings –> Emails 保证第二步里显示的 email在这里是 verified 状态

  4. User Settings –> Notifications 里 email保证正确,选择 level 为第一个,并勾选接收通知如下图

    6801515572021_.pic_hd

  5. 创建一个项目

  6. Settings –> Integrations –> email on push,具体如下图

    6831515572084_.pic_hd

  7. ❤️enjoy it ~~

o(╯□╰)o我只要一毛钱的鼓励~~