Fedora 23 で GitLab を 8.3.2 にアップグレードする
Software Configuration Management (SCM)
Fedora 20 を Fedora 23 にアップグレードした頃合いに、そこで稼働していた GitLab 7.7.2 で SSH キーを登録できなくなりました。
OS 環境との互換性が原因だったようなので GitLab を 8.3.2 にアップグレードしてみたところ、改善しました。
ConoHa VPS で運用している Fedora 上の GitLab で SSH キーを登録しようとしたところ、次のエラーで登録できませんでした。
Fingerprint cannot be generated
心当たりとしては、最近に Fedora を Version 20 から 23 にアップグレードしたことが挙げられます。そのときの話は こちら に記してあるのですけど、その際にもしかして SELinux 周りの許可がおかしくなったのかもと思ったのですけど、試しに SELinux を Permissive 状態にしてみても、登録できるようにはなりませんでした。
他に何が原因だろうと思って調べてみると、なにやら OpenSSH との相性問題の可能性 が出てきました。OpenSSH が 6.8 以上だと今回のエラーが発生する可能性があるみたいで、そして Fedora 23 では OpenSSH 7.1 がインストールされている様子です。
OpenSSH を 6.7 にダウングレードする対処方法もあるみたいですけど、GitLab と OpenSSH との相性であれば、もしかして GitLab を最新版にアップグレードすれば解消するかもしれないと思い、試してみることにしました。
ちなみに以前、SELinux で適切な設定が行われていない場合にも同じエラーが発生したことがありました。SELinux の設定については こちら
の SSH Key を登録できるようにする
で記してあります。
GitLab を 8.3.2 へアップグレードする
今回の環境を整理すると、Fedora 23 に GitLab 7.7.2 がインストールされている状況です。この GitLab を 8.3.2 Community Edition (CE) にアップグレードしてみることにします。
最新版 GitLab のダウンロードやインストール方法は Download GitLab Community Edition に掲載されています。アップグレードも基本的にはそれに似た手順でできる様子でしたけど、幾つか躓くところもあったので、そんなあたりも踏まえてアップグレードまでの様子を記しておきます。
対応環境の選択
まず、ダウンロードページの Install a GitLab CE Omnibus package on
のところで、インストールする OS 環境を選択することになるのですけど、リストの中に Fedora は含まれていません。
Fedora は将来の RedHat Enterprise Linux 的な OS だと思っているので、今回はとりあえず CentOS 7 (and RedHat/Oracle/Scientific Linux 7) を選んでみることにしました。
OS 環境を選択すると、その環境に合うインストール方法が表示されるので、基本的にはその内容に従っていきます。
今回は依存パッケージは必要なさそう
今回は GitLab 7.7.2 からのアップグレードなので、インストール手順の最初に描かれている Install and configure the necessary dependencies
の手順は必要なさそうでした。
その次の手順から進めることにします。
gitlab-ce リポジトリは使えない様子
次の Add the GitLab package server and install the package
の手順では、2種類のインストール方法が掲載されていました。
そのうちの1つは yum に gitlab-ce リポジトリを登録して、そこから GitLab をインストールする方法 だったのですけど、この方法を使ってみても Fedora 23 だからなのか gitlab-ce リポジトリは登録されるものの、そこから GitLab をインストールすることができない様子でした。
RPM パッケージからインストールする
そこで今回は、もう一つのインストール方法として紹介されている、RPM パッケージを手動でインストールする方法でアップグレードしてみることにしました。
最新のパッケージは gitlab/gitlab-ce - Packages
に収録されています。
現在では GitLab 8.3.2 CE が最新版のようなので、その RedHat Enterprise Linux 7 用の gitlab-ce-8.3.2-ce.0.el7.x86_64.rpm
を使うことにします。
使いたい GitLab のファイル名を確認したら、次のコマンドのファイル名の部分をそれに差し替えて実行します。
curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.3.2-ce.0.el7.x86_64.rpm/download
そうしたら今回はアップデートなので、次のように RPM コマンドを使ってパッケージをアップデートします。
rpm -Uvh gitlab-ce-8.3.2-ce.0.el7.x86_64.rpm
このようにすると GitLab CE 8.3.2 へのアップグレードが始まり、これまで使っていた GitLab 7.7.2 が削除されて、GitLab のアップグレード処理が完了しました。
GitLab の再設定
GitLab パッケージのアップデートが完了したら、続いて次のコマンドを使って再設定を行います。
/opt/gitlab/bin/gitlab-ctl reconfigure
このようにするといろんな処理が長々と行われて、それが終わると GitLab CE 8.3.2 へのアップグレードが完了します。
GitLab CE 8.3.2 へのアップグレード完了
これで GitLab CE 8.3.2 へのアップグレードに関する操作が終わったわけですけれど、その完了直後に GitLab の Web インターフェイスにアクセスしてみたら、画面に次のエラーメッセージが表示されてしまいました。
500 Whoops, something went wrong on our end.
原因をつきとめようと /var/log/gitlab
のあたりを確認してみたりしたのですけど特定できず、仕方ないのでとりあえず Fedora を再起動してみたところ、問題なく接続できるようになりました。
これまでの GitLab 7.7.2 とはずいぶん印象が変わって、少し洒落た見やすい画面になりましたね。
今回の GitLab をアップグレードすることになった発端の SSH キーの登録も、Fedora 23 + GitLab CE 8.3.2 なら問題なく行えるようになって、でも良い感じです。
gitlab-ctl のパスについて
ところで GitLab の再設定などで使う gitlab-ctl
コマンドについてなのですけど、GitLab のインストール方法の説明画面では、パスを指定しないで直接実行できる説明になってましたが、少なくとも今回の自分の環境ではパスを指定しないと実行できませんでした。
頻繁にこのコマンドを使う場合は ~/.bash_profile
で /opt/gitlab/bin
を PATH
に追加しておくと便利かもしれません。
PATH=$PATH:/opt/gitlab/bin