実行環境
項目 | 内容 |
---|---|
OS | WSL2:ubuntu2020 |
ミドルウェア | Docker-Desktop |
バックアップ
GitLabのバックアップでは、3種類のファイルをバックアップする。
GitLab
GitLab のデータ本体。コマンドは下記。
# 12.2 以上なら下のコマンドだけ $ sudo gitlab-backup create
GitLab設定ファイル(gitlab.rb)
GitLab の諸設定ファイル。IPアドレスやメール送信設定、LDAPなどをできるようにしている場合、これも移植しないと移植先で当該機能を再設定する羽目になる。
注意としては、上記のGitLabのバックアップで一緒にバックアップしてくれないので自分で抜き取る。パスは、
/etc/gitlab/gitlab.rb
。GitLab シークレットファイル(gitlab-secrets.json)
ユーザプロフィールや2段階認証情報などが入っている。これがないとログインできなくなる。この子も、バックアップされないので、自分で抜き取る。
リストア
バックアップ時のGitLabと、リストア先のGitLabのバージョンは揃えておく。Dockerコンテナであっても、コンテナ内で下記を実行してあげれば、リストア可能(Dockerコマンド版もある)。
バックアップファイルをリストア先のパックアップパスにおき、所有者とグループ変更する
バックアップパスのデフォルトは
/var/opt/gitlab/backups/
で、バックアップファイル(gitlab.rb
)に定義されているので、念の為確認する。# 例 $ sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/ $ sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar
データベースに接続するプロセスを停止する
$ sudo gitlab-ctl stop puma $ sudo gitlab-ctl stop sidekiq # Verify $ sudo gitlab-ctl status
リストアを実行する
# バックアップファイルの『_gitlab_backup.tar』は不要 $ sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
gitlab-secrets.json
とgitlab.rb
を置き換える下記コマンドを叩いて、GitLabを更新する。
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart $ sudo gitlab-rake gitlab:check SANITIZE=true
最後に整合性チェックを行う
$ sudo gitlab-rake gitlab:artifacts:check $ sudo gitlab-rake gitlab:lfs:check $ sudo gitlab-rake gitlab:uploads:check
バージョンアップグレード
Docker で稼働する GitLab のバージョンアップはとても簡単。コンテナの立ち上げ方はこちらを参照。
GitLab をアップグレードする際には、アップグレードパスに乗ってあげていく必要がある。本日時点では、次のようになっている。
8.11.Z-> 8.12.0-> 8.17.7-> 9.0.13-> 9.5.10-> 10.0.7-> 10.8.7-> 11.0.6-> 11.11.8-> 12.0.12-> 12.1.17-> 12.10.14-> 13.0.14-> 13.1.11-> 13.8.8-> 13.12.15-> 14.0.12-> 14.3.6-> 14.9.5-> 14.10.Z-> 15.0.Z-> 15.1.Z(複数の Web ノードを持つ GitLab インスタンスの場合) ) -> 15.4.0->最新15.Y.Z
例えば、現在のGit Labのバージョンが、14.3.2
の場合、14.3.6-> 14.9.5-> 14.10.Z-> 15.0.Z-> 15.1.Z -> 15.4.0 -> 15.Y.Z(latest)
という順に上げていく。Y,Z
は任意。
公式手順のDocker コンテナで稼働している場合は、コンテナを削除して、アップグレードパスの次のイメージをプルして、新しいコンテナを立ち上げるだけで良い。
データ自体は Docker ボリュームに保存されているため消えない。念の為バックアップは必須。
大雑把な手順をまとめる。
- バックアップを取る
- 実行中コンテナを停止する (
sudo docker stop gitlab
) - Dockerコンテナを削除する (
sudo docker rm gitlab
) - 次のアップグレードパスのコンテナを立てる(
sudo docker pull gitlab/gitlab-ce:<next path>
)参考 - アップグレード版GitLabが起動するのを待つ
- ヘルプ画面でバージョンを確認し、アップグレードできていることを確認する
あとは、所望のバージョンになるまで、2〜6を繰り返す
参考: * アップグレード * アップグレード パス