GitBucketのPages pluginを改造した話
はじめに
弊社ではソース管理にGitBucketを利用していて、いくつかプラグインも導入しています。
この中のGitBucket Pages pluginを導入するとGitHub PagesのようにGitリポジトリを静的なウェブページをホスティングすることができます。ですが、当初のGitHub Pagesのようにgh-pages
ブランチとgb-pages
ブランチだけしかホスティングされませんので、reveal.jsやswagger-uiのようにサーバに配置するだけで動作するWebアプリだとブランチを変更する必要があります。
そこで現在のGitHub Pagesのようにホスティングするブランチを選択できるように改造してみました。
- 開発版
- GitBucket 4.10で動作確認済みのもの
追加した機能
この画面のようにSettingsにPagesタブを追加してホスティングするブランチを選択できるようにしました。 機能面ではこれだけなのですが、設定を保存するためにテーブル、モデルクラス、サービスクラスを追加していったので元のコードサイズの2倍近くになってしまいました。
困ったこと
画面と設定反映まで作ったところで気付いたのですが、リポジトリ名を変更したり、オーナーを変更してもプラグイン側からは分からないのでテーブルに反映できない事に気付き困ってしまいました。
そこでテーブルの代わりにリモートリポジトリのgit configに設定を保存したのが上述した、「GitBucket 4.10で動作確認済みのもの」です。
とは言え、サーバーの設定をファイルに保存するのは気持ち悪いものです。
そんな事をTwitterでつぶやいていたら作者のTakezoeさんがプラグインのためのフックポイントを追加してくれました。これを利用したものが上述した、「開発版」です。
このフックポイントはまだリリースされていませんが、次のバージョンとしてリリースされ次第、Pull Requestを出す予定です。
さいごに
今回は困ったことをTwitter経由で拾ってもらいましたが、GitBucketは日本語サポートのチャットがあり、開発だけではなく運用についても気軽に問い合わせることができます。
ちょっとプライベートリポジトリが欲しいなーという場合に是非お試しください。