Gitlab server migration / 把 gitlab server 搬家

Phanix
·
·
IPFS
·

这篇文章整理得很好,把落落长的gitlab官方文章变得精简许多。

安装新server

目前gitlab 已经把EE (enterprise edition) 跟CE (community edition) 整合在一起,如果EE 没有付费,那么试用期过后自动变成CE。但如果直接就是要安装CE 的话,安装说明要找一下(虽然跟EE 差不多),以ubuntu 来说的话在这边

备份原有server

这次migration 是从gcp 要搬去alibaba cloud,所以比较懒惰的方式是透过gcp bucket storage,之前做的备份机制刚好可以用,设定在/etc/gitlab/gitlab.rb。

 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

gitlab_rails['backup_keep_time'] = 604800

gitlab_rails['backup_upload_connection'] = {
    'provider' => 'Google',
    'google_storage_access_key_id' => 'YOUR_GCP_BUCKET_STORAGE_ACCESS_KEY_ID',
    'google_storage_secret_access_key' => 'YOUR_GCP_BUCKET_STORAGE_SECRET_ACCESS_KEY'
}
gitlab_rails['backup_upload_remote_directory'] = 'YOUR_GCP_BUCKET_NAME'

找bucket name 以及access key 以及secret access key 可以参考下面两张图。


设定完成之后,就可以开始做备份。

 /opt/gitlab/bin/gitlab-rake gitlab:backup:create

备份完成后,档案就会自动复制到gcp storage bucket 去,档案名字会类似”TIMESTAMP_gitlab_backup.tar”这样的格式。接下来只要开启公开连结功能,就可以从新server 上下载了。

Restore

新机器安装完gitlab 后,先做gitlab-ctl reconfigure,然后启动gitlab (必须要在gitlab 运行状况下才能restore),在把当中的unicorn 与sidekiq 两个服务先暂时关闭,然后把下载下来的备份档案搬去在gitlab.rb 档案中设定的gitlab_rails['backup_path'] 里头,然后开始restore。

 sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=<TIMESTAMP> #注意只要备份档案的timestamp 部分就好,不用加上_gitlab_backup.tar

接下来就是漫长的restore 过程(有同事把build 出来的binary file 都丢上去了,只能无言面对40 GB 的漫长restore),除了中间会有几次询问是不是要overwrite 现有的gitlab 之外,就只能等了。

Restore后做检查

gitlab-ctl reconfigure
gitlab-ctl start
sudo gitlab-rake gitlab:check SANITIZE=true

喔,对了,这个一行的checkout all remote branch 也蛮好用的。

 for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done

Original link: Phanix's Blog

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!