gitbucket-windows-backup-pluginの0.5をリリースしたお話

はじめに

github.com

gitbucket-windows-backup-pluginの0.5をリリースしました。 今回のリリースで以下の機能の追加を行いました。

  • バックアップの最終ステップでAWS S3互換のオブジェクトストレージにアーカイブをアップロード出来るように変更
  • 特定のURLへのPOSTでバックアップを即時実行するように変更

AWS S3へのアップロード

バックアップって言っても同じドライブ、同じハードにバックアップしたってしょうがないよねと言う事で、オブジェクトストレージのデファクトスタンダードAWS S3にアップロード出来るようにしました。

winbackup {
  # S3 compatible object storage for backup upload (Optional)
  s3 {
    # Endpoing URL
    endpoint = "http://localhost:9000"

    # Region
    region = "US_EAST_1"

    # Access key
    access-key = "access-key"

    # Secret key
    secret-key = "secret-key"

    # Bucket of backup destination
    bucket = "gitbucket"
  }
}

設定ファイルにS3の設定を行うことでバックアップの最終ステップでバックアップをオブジェクトストレージに転送するようにしました。

バックアップの即時実行

ほぼテスト用の機能なのですが、admin権限付きでhttp://http://localhost:8080/api/v3/winback/execute-backupにHTTP POSTすることでバックアップを即時実行できるようにしました。

ScalaでもAWS S3互換にファイルをアップロードしたい

はじめに

S3にファイルをアップロードするコードを追加するのに、いきなりAWSを契約するのは勇気が要る*1のでとりあえずS3のコンパチ品でテストしてみることにしました。

github.com

Minio

こちらのMinioさん、単一のファイルをダウンロードして実行するだけで使える割とよさげなオブジェクトストレージサーバです。

minio server C:\Hoge

また、何かと不遇な扱いを受けるWindowsにもきっちりと対応しているナイスガイで、弊社の好感度は割と高めです。

AWS SDK

S3のコンパチ品を使う以上、S3のSDKはもちろん動くよねってことでAWS Java SDK For Amazon S3を投入します。

sbtに

libraryDependencies += "com.amazonaws" % "aws-java-sdk-s3" % "1.11.277"

を追加し、あとはネット上に死ぬほど転がっているJavaのサンプルコードをもとにぽぽーんとコードを書けばあっという間にアップロードが出来ます。かんたんですね

val credentials = new BasicAWSCredentials("access-key", "secret-key")
val clientConfiguration = new ClientConfiguration
clientConfiguration.setSignerOverride("AWSS3V4SignerType")

val s3Client = AmazonS3ClientBuilder
  .standard()
  .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://192.168.0.100:9000", Regions.US_EAST_1.name()))
  .withPathStyleAccessEnabled(true)
  .withClientConfiguration(clientConfiguration)
  .withCredentials(new AWSStaticCredentialsProvider(credentials))
  .build()

val f = new File("""C:\Users\jyuch\gitzip\backup-201802090041.zip""")
s3Client.putObject(new PutObjectRequest("gitbucket", f.getName, f))

おわりに

楽っちゃ楽なのですが、fat jarを生成するとバイナリサイズが+10MBになるのは割とアンニュイな感じです。

github.com

*1:契約後1年は無料枠があるっぽいですが

gitbucket-windows-backup-pluginの0.4をリリースしたお話

はじめに

という訳でgitbucket-windows-backup-pluginの0.4をリリースしました。

github.com

新機能

バックアップの成功時もしくは失敗時にメール通知を行うようにしました。

バックアップの成功時もしくは失敗時にメール通知を行うには、GitBucketのSMTP設定を設定したうえで以下のような設定をbackup.confに追加します。

winbackup {
  # バックアップ成功時に通知メールを送信します(オプション デフォルトはfalse)
  notify-on-success = true

  # バックアップ失敗時に通知メールを送信します(オプション デフォルトはfalse)
  notify-on-failure = true

  # 通知先を指定します
  notify-dest = ["jyuch@localhost"]
}

弊社の環境ではGmailでテストを行っております。その他の環境で動かない場合はいい感じに頑張ってもらうか弊社まで連絡下さい。

backup.confの完全な説明はREADMEをご覧ください。

おわり