GitBucketのバックアッププラグインを作ったお話

はじめに

弊社の環境ではWindowsでGitBucketを動作させていますが、GitBucketのバックアップを気合と根性とJenkinsと自作プログラムとpsql*1PowerShellで行っていたのが割とつらみポイントが高めだったので、オールインワンでバックアップを行ってくれるプラグインを作りました。

github.com

名前に『Windows』と入っていますが、別にWindows固有の機能を使っているという訳ではないのでたぶんLinuxMacでも動くと思います。

概要

一定間隔で以下のデータのバックアップをZIPで固めて指定されたディレクトリに移動します。

テスト環境

一応以下の環境でテストを行っています。

OS

データベース*2

インストールと設定

リリースページからダウンロードしてきてGITBUCKET_HOME/pluginsに配置します。

そして、GITBUCKET_HOME/backup.confを以下のように設定します。

# バックアップタイミング(必須)
# 書式についての詳細は http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html を参照
# 以下の例だと毎日12AMにバックアップを実行します
akka {
  quartz {
    schedules {
      Backup {
        expression = "0 0 0 * * ?"
      }
    }
  }
}

winbackup {
  # バックアップのZIPの保存先を指定します(オプション)
  # 指定しなかった場合、GITBUCKET_HOMEに保存します。
  archive-destination = """C:\archive-dest-dir"""

  # ZIPの最大保持数(オプション)
  # 指定されなかった場合、無限に保持します。
  archive-limit = 10
}

互換性

GitBucketの各バージョンに適合するプラグインバージョンについてはREADMEをご覧ください。

ライセンス

ライセンスはApache License 2.0ですよろしくおねがいします

おわりに

単機能な上にあまりエレガントな実装ではないのですが、弊社の欲しい機能は一通り網羅出来たので弊社的にはOKです。

あとは

  • APIを叩くと任意のタイミングでバックアップを実行できる
  • バックアップ終了後にS3とかのストレージサービスに自動でアップロードする

みたいな機能も付け加えてもいいかもしれません。

*1:データベースがPostgreSQLなので

*2:直接DBを叩いている訳ではないのでGitBucketがサポートしているDBならどれでも問題ないはずです。