GitHub Enterprize Server のアップグレードを行う


はじめに

GitHub Enterprise Server のアップグレードは定期的に発生します。
作業自体は難しくはありませんが、アップグレードを行うにあたり注意点もあるため、備忘録としてまとめてみました。

アップグレードの注意点

  • GitHub Enterprise Server が一度にアップグレードできるのはバージョンの2桁目(シリーズ)の数字が2つ以内。
  • 2.20.7→2.20.24 などバージョンの3桁目が上がるパッチアップグレードの場合はhpkgファイルを使用。
  • システム要件はバージョンごとに異なるためシステムリソースのスケールアップ(AWSであればインスタンスタイプの変更)をしてからアップグレードを行う。
  • バックアップツール(GitHub Enterprise Backup Utilities)は、アップグレード後のGitHub Enterprise Server のバージョンの1桁目及び2桁目と揃える。

また、今回は 3.0.2 へアップグレードをする方が多いと思います。2.22→3.0へアップグレードを行うにあたり、システム要件に変更があるため作業する前に忘れずにスペック変更を行いましょう。
それ以外の手順はここで記載の方法で問題なく行えます。(実際に行えました。)

アップグレード手順

1. バックアップサーバより以下のコマンドを実行しバックアップを取得し、バックアップの取得が正常完了していることを、確認しておきます。

バックアップ
$ bin/ghe-backup

2. GitHub Enterprise Server のリリースページへ移動し、新しいバージョンの右端のDownloadを押下します。

3. Upgradingタブを押下し、使用されているプラットフォームを選択し、pkgファイルのURLをコピーします。

4. 管理者用SSHでGitHub Enterprise インスタンスへ接続します。

ログイン
$ ssh -p 122 admin@[hostname]

5. 以下のコマンドを実行し、pkgファイルをGitHub Enterprise インスタンス上にダウンロードします。

pkgダウンロード
$ curl -L -O [pkgファイルのURL]

(AWSの場合の実行例:curl -L -O https://github-enterprise.s3.amazonaws.com/ami/updates/github-enterprise-ami-2.22.7.pkg)

6. メンテナンスモードを有効にします。
https://[hostname]:8443/setup/maintenance
上記のURLへアクセスし、画面上のチェックを入れ、画面下部の Active processes の値が全て0であることを確認します。

7. 管理者用SSHコンソールより以下のコマンドを実行し、アップグレードを行います。

アップグレード
$ ghe-upgrade [GITHUB-UPGRADE.pkg]

(AWSの場合の実行例: ghe-upgrade github-enterprise-ami-2.22.7.pkg)
SSHコンソール上で画面に従い、OSの再起動要求が表示されたら、y を入力し再起動を行います。

8. インスタンスの再起動後、Management console(https://[hostname]:8443/setup/settings)へアクセスし、Save settings を押下し、インスタンスの設定を保存します。

9. メンテナンスモードを解除します。https://[hostname]:8443/setup/maintenance へアクセスし、画面上のチェックを外します。

バックアップツールの更新

backup-utils
$ curl -LO [github-backup-utils.tar.gz]

(AWSの場合の実行例: curl -LO https://github.com/github/backup-utils/releases/download/v2.22.0/github-backup-utils-v2.22.0.tar.gz)

備考

adminコンソールから以下のように進捗状況が確認できます。

アップグレードを実行してから完了するまで時間がかかるので気になる場合はこの画面で確認するようにしましょう。

おわりに

GitHub Enterprize Server のアップグレードはとても簡単です。ただ、バージョンが上がるごとにシステム要件も上がっていく傾向にあります。
そもそものライセンスも高く、インスタンス費用なども年々上がっているため、必要性がなければ利用を避けるべきかなと正直感じています。