bouzuya.hatenablog.com

ぼうずやのにっき

Amazon S3 にファイルをアップロードする Grunt プラグイン grunt-tentacles をつくった

Amazon S3 にファイルをアップロードする Grunt プラグイン grunt-tentacles をつくった。

過去に何度か紹介しているのだけど、ぼくは bouzuya.net のデプロイblog.bouzuya.net のデプロイTravis CI の S3 Deployment を使っている。手軽に設定できるし、準備もほとんど要らない。

だけど、この方法には大きな問題がある。アップロードの速度・それにかかる時間である。

ファイルの有無・内容に関わらず無条件にアップロードする Travis CI の S3 Deployment では、すべてのファイルを毎回アップロードする。この挙動には時間がかかるし、ファイル数が増えれば増えるほど遅くなる。 ファイル数が少なければ問題ないのだが、blog.bouzuya.net のポスト数は 800 を超えていて、そこそこに時間がかかる。

昨日のアップロードでタイムアウトが起きていて、そろそろダメそうなので、簡単なプラグインを書いた。

それが grunt-tentacles だ。Amazon S3 にあるファイルのリストと ETag ( MD5 ) とを得て、ローカルにあるファイルのリストと MD5 とを比べる。変更のあるものだけをアップロードすることで大幅に高速化する。ローカルにあるすべてのファイルの MD5 をとることになるが、Amazon S3 にアップロードすることに比べれば、かなり速い。

ちなみに名前は kraken の下で動く予定なので tentacles にした。タスク名から動きを想像しづらいのだけど、grunt-s3 のような名前は既にとられているし、それらのほとんどはゴテゴテとしたプラグインである。シンプルなアップロードの機能のみを持つプラグインを、ぼくは求めている。

明日にはこれを適用した blog.bouzuya.net を公開するつもりだ。