Hobo Chen

使用GitLab CE

这篇文章记录了我对GitLab有关的思考以及我在运维GitLab CE中的常用的命令。

使用之前

我思考过的事情包括:

  1. 需要使用Git保管的东西包括哪些?能容忍多低的不可用时间和灾备RPO?
  2. 为什么不用GitHub?
  3. GitLab CE部署在哪里?

这里贴上我的回答以供参考:

  1. 一些临时的代码仓库,一些小的、不常用的文本文件。
  2. GitHub有的时候太慢了(尤其是小diff的情况下),而且只有付费用户才能使用私有仓库。
  3. 目前,我的GitLab CE部署在家里的路由器中,配置详细见我的电子产品中的杭州路由器;我也曾经在Tinker Board和树莓派中部署过,前者速度还可以忍受,后者则是几乎不可用。

安装

1
2
3
4
sudo apt update
sudo apt install -y curl openssh-server ca-certificates
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce

配置文件是/etc/gitlab/gitlab.rb

修改:

1
external_url 'http://gitlab-hz.192217.space'

小内存优化

我在tinker上的配置如:

1
2
3
4
unicorn['worker_processes'] = 2 # minimum is 2, recommend to cores + 1
sidekiq['concurrency'] = 2 # recommend to cores
prometheus['enable'] = false # about 200MB
postgresql['shared_buffers'] = "128MB" # **recommend value is 1/4 of total RAM, up to 14GB.**

我在W500上的配置如:

1
2
3
4
unicorn['worker_processess'] = 4
sidekiq['concurrency'] = 10
prometheus['enable'] = true
postgresql['shared_buffers'] = "512MB" # **recommend value is 1/4 of total RAM, up to 14GB.**

使用外部SMTP服务

1
2
3
4
5
6
7
8
9
10
gitlab_rails['gitlab_email_from'] = 'hobochen96@qq.com'
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_password'] = "say_you_love_me"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_user_name'] = "hobochen96"

可以使用命令sudo gitlab-ctl reconfigure来使上文的所有配置生效。

备份

备份至少包含:数据、元数据。

元数据

1
2
/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb

数据

1
sudo gitlab-rake gitlab:backup:create

恢复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo cp _file /var/opt/gitlab/backups/
sudo chown git.git /var/opt/gitlab/backups/_file

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

# Verify
sudo gitlab-ctl status

# This command will overwrite the contents of your GitLab database!
sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce

# Restore the meta

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

参考:

  1. https://docs.gitlab.com/ee/raketasks/backup_restore.html